【发布时间】:2013-04-22 21:51:19
【问题描述】:
我是多线程编程的新手,我只知道最常见的 Producer-Consumer-Queue。 我正在使用 boost c++ 库,我不知道是否更好地使用 boost::lockfree::queue 或使用`mutex`和`condition_variable`的 std::queue 周围的包装类。
使用无锁数据结构哪里更好,哪里更好使用基于 `mutex` 和 `condition_variables` 的简单实现?
【问题讨论】:
-
主要看你是否为多核处理器编程。如果您的目标处理器是单核,那么您应该使用 shared_queue。
-
目标机器是2核4线程。好的,我会尝试 boost::lockfree。
-
我认为无锁队列即使在单核处理器中也有一席之地。例如,如果您有一个在任何情况下都不应该被阻塞的实时线程,并且如果它需要将数据传递给另一个线程(例如,“空闲任务”线程),那么无锁队列将是一个不错的解决方案。
标签: c++ multithreading boost producer-consumer lock-free