2

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

  • Thread1 正在执行它的任务,在某些情况下,他必须将状态更新通知给 Thread2。

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

如何在两种情况下唤醒 Thread2:

  • 队列中有新消息通知;

    或者

  • Thread1 的状态变化

欢迎提供实用的代码示例

4

2 回答 2

2

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

于 2013-06-08T09:33:27.890 回答
2

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

于 2013-06-08T09:39:10.080 回答