fre*_*low 53 c++ concurrency visual-studio-2010 blockingqueue c++11
特别是,我正在寻找一个阻塞队列.C++ 11中有这样的东西吗?如果没有,我的其他选择是什么?我真的不想再去自己的线程了.方式太容易出错.
Lio*_*gan 36
根据微软Visual C++团队的Diego Dagum的说法:
一个反复出现的问题(好吧,其中之一)是关于STL容器以及它们是否是线程安全的.
在这里采用斯蒂芬的话,现实是他们不是,不是作为一个错误而是作为一个特征:让每个STL容器的每个成员函数获得内部锁定都会消灭性能.作为通用的,高度可重用的库,它实际上也不会提供正确性:放置锁的正确级别取决于程序正在执行的操作.从这个意义上说,个别成员的职能往往不是那么正确.
并行模式库(PPL)包括几个容器,这些容器提供对其元素的线程安全访问:
这里有一些样品.
同样有趣:http://www.justsoftwaresolutions.co.uk/threading/implementing-a-thread-safe-queue-using-condition-variables.html.
我很惊讶没人提到moodycamel :: ConcurrentQueue.我们已经使用它已经有一段时间了,它表现得非常好.具体而言,它的实现是无锁的,这会立即带来巨大的速度.使用它的其他原因(引自官方网站):
C++没有那么多完整的无锁队列.Boost有一个,但它仅限于具有普通赋值运算符和普通析构函数的对象.英特尔的TBB队列不是无锁的,也需要简单的构造函数.有许多学术论文在C++中实现无锁队列,但很难找到可用的源代码,测试更是如此.
| 归档时间: |
|
| 查看次数: |
32847 次 |
| 最近记录: |