C++TBB concurrent_bounded_queue-弹出超时
C++ TBB concurrent_bounded_queue - pop timeout
我注意到TBB concurrent_bounded_queue阻塞弹出没有超时。我们正在从另一个实现转移到TBB,在那里我们进行了定时等待,因此在这里寻找相同的功能。
在任何情况下,定时等待通常都是有用的,任何建议都将受到赞赏。
感谢
根据TBB的架构师Arch Robinson的说法,超时从来都不是优先事项:
TBB的最初设计针对的是用于并行加速的基于任务的编程范式。这就是我认为的"经典"并行算法,如parallel_fo、parallel_reduce等。容器和互斥对象的设计就是考虑到了这一点;即避免比赛条件。预计封锁时间会很短,否则该项目将无法扩大规模。因此,超时不是优先事项。
有一篇老文章,其中一位TBB工程师讨论了定时互斥。您可能无法直接使用那里绘制的解决方法,但它可以帮助您自己实现阻塞出列,基于concurrent_queue
的非阻塞try_pop
。
我不希望它的性能接近于只使用TBB队列,而且它不会那么琐碎(可能是100+LOC),但如果你真的想要它,它是可以做到的。
p.S.Java BlockingQueue
风格的带超时的阻塞轮询/提供是您可能不想在快速通道上使用的东西。有几次,我用这样的方法开始了一个实现,但一段时间后(并非双关语),我发现生产者/消费者的压力是不够的,仅仅阻止至少同样有效,或者我需要调查发生了什么,并重新思考我的代码的某个部分。
相关文章:
- C++减少modbus_connect超时
- 没有超时的C++条件变量
- 如何在C++(VS2010)中设置超时读取USB端口?
- C++卷曲柱在curl_easy_perform超时
- 如何在Qt 4.8中阻止/忽略/丢弃早于特定超时的用户输入事件
- 如何改进我的代码,使其不会因超时而终止?(黑客排名挑战)
- C++:函数外部的超时功能
- 使用boost::multiprecision cpp_int左移时出现超时错误
- QTimer 超时不会在单元测试中触发
- 使用单体计时器的pthread_cond_timedwait有时会比预期晚超时
- 超时后,线程睡眠不会继续执行
- 接受超时的 TCP 连接
- 为 g++ build 设置超时,为 Sublime Text 运行?
- 如何通过命令行工具在 COIN-OR Cbc 中设置超时?
- 高CPU使用率,在API桌面复制中获取帧之间具有不同的超时间隔
- 0作为std::condition_variable::wait_fo中的超时
- 为什么我在蓝牙连接()上收到"java.io.IOException:读取失败,套接字可能关闭或超时,读取re
- UDP 套接字 select() 在某些情况下无延迟(超时)返回 1
- 使用 alarm() 实现进程超时
- 设置 c/c++ 函数调用的超时