У меня есть несколько вопросов о библиотеке Loki, а также о новом стандарте C ++ 11.
Мой первый вопрос о LevelMutex
функциональность библиотеки.
LevelMutex
напрямую использует CRITICAL_SECTION
на окнах и pthread_mutex_t
в
Linux для того, чтобы реализовать свои функциональные возможности. Классы очень хорошо
дизайн, но вопрос остается в моей голове. Теперь, когда у нас есть новая обертка
в новом стандарте (std::mutex
) стоит ли заменять объекты низкого уровня
которые зависят от платформы? Если нет, то почему? Я хочу сказать, что
— мы можем удалить много проверки компилятора в Локи
— мы можем поддерживать актуальную версию Loki, и все изменения будут отправлены в Loki, когда изменения произойдут в стандартной библиотеке
— мы можем использовать исключения std::mutex
в Локи.
я знаю это std::mutex
это просто обертка вокруг объектов мьютекса платформ и
что исключения также являются оберткой вокруг системных ошибок, но все же …
Тот же вопрос относится к функциональности в Threads.h
,
Мой второй вопрос о SmartPtr
реализовано в Локи.
Как вы думаете, стоит ли использовать эту реализацию, учитывая тот факт, что у нас есть
shared_ptr
, unique_ptr
, так далее ? Если так, то почему? Если нет, я думаю, что это хорошая идея, чтобы переписать
реализация LockingPtr немного, чтобы получить потокобезопасный shared_ptr?
Мой последний вопрос о новом std::thread
функциональность в стандарте C ++ 11.
Я думаю о написании классов политики для этой конкретной функциональности, как
возможность создавать присоединяемые или отсоединяемые потоки.
По вашему мнению, какая часть std::thread
было бы интересно создать политику для?
Заранее спасибо за ответы!
Это широкая и несколько субъективная тема, и я могу дать вам только мой личный совет. Я не буду вдаваться в подробности, так как считаю важным сделать шаг назад и посмотреть на картину в целом.
Я получил хороший опыт, используя новый стандарт C ++ 11 и заменяя другие библиотеки тем, что предлагает стандартная библиотека. Под словом «я» я также подразумеваю кодовую базу, в которой я работаю (отдел компании с более чем 100 000 сотрудников).
Такие библиотеки, как Loki или Boost, проделали довольно хорошую работу по изучению новых границ и продвижению C ++, для Boost на самом деле было явной целью создать новые компоненты, которые в конечном итоге будут стандартизированы.
В то время как стандартизированные версии std::shared_ptr
, std::thread
а также std::mutex
может не хватать нескольких деталей, они хорошо спроектированы, переносимы и, учитывая, что они являются частью стандартной библиотеки, поставляемой с компилятором, они очень хорошо протестированы! Это важные моменты в их пользу. Это также помогает сделать ваш код перспективным и более легким в обслуживании, так что новым людям легче подключиться.
Таким образом, мой совет будет таким: используйте все, что может предложить C ++ 11 (включая стандартную библиотеку), насколько это возможно. Используйте только Loki, Boost или другие библиотеки, если это необходимо, но следите за их развитием.
Других решений пока нет …