Безопасно ли использовать boost::lockfree с библиотекой поддержки потоков С++ 11?

В настоящее время у меня есть код, написанный с использованием библиотеки поддержки потоков C++ 11: http://en.cppreference.com/w/cpp/thread

Мне интересно, безопасно ли смешивать этот код с boost::lockfree. http://www.boost.org/doc/libs/1_54_0/doc/html/lockfree.html

То есть я хочу, чтобы несколько потоков C++11 std::threads одновременно обращались к boost::lockfree::queue. Вероятно, было бы безопаснее заменить поток C++11 на boost::thread, но если бы я мог свести к минимуму изменение кода, было бы неплохо.


person d_ijk_stra    schedule 09.09.2013    source источник
comment
Короткий ответ: Возможно: все известные мне структуры данных и алгоритмы без блокировок не так сильно зависят от деталей модели потоков, как они полагаются на примитивы процессора. Длинный ответ - не знаю, потому что это, возможно, будет зависеть от некоторого глубокого моджо в вашем языке и повышения реализации. На платформе с отсутствием примитивов параллелизма (например, CAS) вы можете представить кучу вещей, реализованных совершенно сумасшедшими способами, и boost и std выбирая разные безумные способы. Вы программируете на относительно стандартном оборудовании?   -  person Yakk - Adam Nevraumont    schedule 10.09.2013
comment
Является ли переносимость проблемой? Если да, то вы холодно использовать его. Если разработка ведется в Windows, вы можете использовать библиотеки параллельных шаблонов.   -  person Jagannath    schedule 10.09.2013


Ответы (1)


В настоящее время я сам работаю над реализацией пула потоков, используя очередь без блокировки и std::thread, однако я использую алгоритм атомной очереди Джо Сея, а не ускоренную версию. Я не вижу причин, по которым версия boost не подойдет, я изучил исходный код, и мне кажется, что это отличная реализация.

person Oakdale    schedule 09.09.2013