Boost:阻塞,直到队列有另一个项目
Boost: Block until queue has another item
我使用Boost的无锁定队列作为生产者-消费者队列。我希望每个使用者线程在队列为空时阻塞,或者在队列中有更多数据时唤醒,或者任何生产者终止。但是Boost似乎并没有提供阻塞pop
,只是提供了一个立即返回的pop
。
消费者应该如何等待数据可用?
您希望执行一个有趣的操作:您希望对无锁定队列执行阻塞操作,这与无锁定队列的作用正好相反。
使用一个使用互斥锁和一个条件变量的普通阻塞队列。这很简单,而且是一种更标准的方法
事实上,在许多情况下,您会为无锁支付性能惩罚,因为您保证队列不会持有任何锁,即使在最坏的情况下也是如此。
这个问题涵盖了这两种方法的许多优点和缺点。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 运行同一解决方案的另一个项目的项目
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- C++从另一个类访问公共静态向量的正确方法是什么
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 使用std::transform将一个范围的元素添加到另一个范围中
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- 我可以将一个用clang c++11编译的对象与另一个用c++17编译的对象链接起来吗
- 修改函数中的指针(将另一个指针作为参数传递)
- 如何读取STD ::队列与另一个线程共享
- 另一个线程安全队列实现
- 如何创建一个将队列作为数据成员的类,该成员在 c++ 中存储另一个类的实例
- Boost:阻塞,直到队列有另一个项目
- 来自另一个线程的 SendMessage() 调用是否将消息发布到消息队列
- 将队列项目复制到另一个类对象中
- 如何在链接列表队列中将一些数据从一个节点传输到另一个节点C++
- 在另一个类中调用一个类(队列)的方法
- 将队列实例的前面复制到另一个队列实例的后面
- 如何设置未来的添加到队列从另一个线程在Cython的结果