C ++ pthread同步和线程的多次唤醒

时间:2013-06-08 09:06:51

标签: c++ multithreading synchronization pthreads wakeup

关于C ++线程同步的问题。 我们假设有2个pthread:Thread1和Thread2。

  • Thread1参与其任务,在某些情况下,他必须将状态更新通知给Thread2。

  • Thread2从事同步队列中提取数据的工作。因此,如果队列为空,则Thread2可以休眠。

如何在两个条件下唤醒Thread2:

  • 队列中的新消息通知;

  • Thread1的状态更改

实用代码 - 欢迎提供实例

2 个答案:

答案 0 :(得分:2)

为简单起见,让Thread1将状态更改通知作为任务插入队列中,由Thread2使用。如果通知的优先级高于常规工作任务,则允许Thread1在其他任务之前将其插入队列,使其成为下一个要使用的任务。

答案 1 :(得分:2)

为什么不使用相同的队列(但命令代码不同)来通知thread2? Thread2只是在阻塞模式下等待队列中的任何数据,对于每个新消息,检查它是否有状态更新或数据,并执行相应的操作。