【发布时间】:2014-08-22 18:22:29
【问题描述】:
队列中是否有任何事件机制或预定义信号。如果任何数据或消息进入队列,队列应该生成一个事件,说明数据已准备好处理。或者向其他线程发出信号来完成他的任务,而不是不断地轮询队列。
在posix消息队列中有类似mq_notify()的函数,如果消息队列中有任何数据,它会通知其他进程或线程,这样我们就可以避免轮询。
编辑
如果没有,那么我该如何在std::queue 上实现这一点。我想避免连续轮询它会降低代码的性能。
每当队列中发生某些事件时,它应该通知其他人。
【问题讨论】:
-
std::deque 不是为直接与线程一起使用而设计的。您必须自己进行同步,包括发出信号。
-
@DonReba 是 AMD 处理器支持的 TBB 队列。
-
@ali786,TBB(线程构建块)是跨平台的。
-
@DonReba 谢谢,我认为它们依赖于架构,只能在英特尔线程 cpu 上执行。
-
它适用于各种处理器,包括 AMD 的。
标签: c++ multithreading c++11 queue message-queue