关于C ++线程同步的问题。 我们假设有2个pthread:Thread1和Thread2。
Thread1参与其任务,在某些情况下,他必须将状态更新通知给Thread2。
Thread2从事同步队列中提取数据的工作。因此,如果队列为空,则Thread2可以休眠。
如何在两个条件下唤醒Thread2:
队列中的新消息通知;
或
实用代码 - 欢迎提供实例
答案 0 :(得分:2)
为简单起见,让Thread1将状态更改通知作为任务插入队列中,由Thread2使用。如果通知的优先级高于常规工作任务,则允许Thread1在其他任务之前将其插入队列,使其成为下一个要使用的任务。
答案 1 :(得分:2)
为什么不使用相同的队列(但命令代码不同)来通知thread2? Thread2只是在阻塞模式下等待队列中的任何数据,对于每个新消息,检查它是否有状态更新或数据,并执行相应的操作。