eli*_*eli 15 c++ queue concurrency
在VS2010中引入的并发运行时,有一个concurrent_queue类.它有一个非阻塞的try_pop()函数.
类似于英特尔线程构建模块(TBB),从版本2.1到2.2时,阻止pop()调用被删除.
我想知道阻塞调用的问题是什么.为什么要从TBB中删除?为什么没有阻塞concurrent_queue?
我正处于需要阻塞并发队列的情况,我不想忙碌等待.除了自己编写队列之外,并发运行时还有另一种可能吗?
pax*_*blo 26
从来自Arch罗宾逊评论,并没有得到更多的"马嘴"比(一):
PPL concurrent_queue
没有阻止弹出,因此也没有tbb::strict_ppl::concurrent_queue
.阻止弹出可用于tbb::concurrent_bounded_queue
.
省略阻塞弹出的设计参数是,在许多情况下,阻塞的同步是在队列外部提供的,在这种情况下,队列内部阻塞的实现变得不必要.
另一方面,旧的阻塞流行音乐tbb::concurrent_queue
在没有外部同步的用户中很受欢迎.
所以我们分开了功能.不需要阻塞或有界的tbb::concurrent_queue
用例可以使用new ,并且需要它的用例可以使用tbb::concurrent_bounded_queue
.
(a) Arch是线程构建模块的架构师.