【问题标题】:C++ pthread synchronization and multiple wake up for threadC++ pthread同步和线程的多次唤醒
【发布时间】:2013-06-04 13:46:15
【问题描述】:

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

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

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

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

  • 队列中有新消息通知;

  • Thread1的状态变化

欢迎提供实用的代码示例

【问题讨论】:

  • 到目前为止你编写了什么代码?
  • 没什么,我在设计架构

标签: c++ multithreading synchronization pthreads wakeup


【解决方案1】:

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

【讨论】:

  • 好的,这可能是实现我的目标的快速解决方案......但是您如何完成我在问题中描述的内容?
  • 我想说这就是您实现所描述目标的方式...是否有任何其他要求使该解决方案不适合?
  • 不。我当然会使用你的建议......但我很好奇你如何实现我的问题中描述的内容......只是对未来感到好奇。
【解决方案2】:

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

【讨论】:

  • 好的,这可能是实现我的目标的快速解决方案......但是您如何完成我在问题中描述的内容?
  • 您需要定义线程2接收的消息:似乎您需要两种消息。您可能有一个消息头来识别它是哪种消息。 Thread2首先检查header然后做相应的处理。
猜你喜欢
  • 2018-10-13
  • 1970-01-01
  • 2022-11-03
  • 2012-05-27
  • 2010-10-29
  • 1970-01-01
  • 2018-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多