【发布时间】:2014-03-29 08:31:42
【问题描述】:
我正在编写一个多路复用器类,它基本上需要等到其中一个源通知它有一个要处理的数据包。在 C# 中我可以做到这一点
WaitHandle.WaitAny(handle_array)
其中 handle_array 包含对每个源元素的 WaitHandle 引用。
提前谢谢你。
【问题讨论】:
标签: multithreading qt
我正在编写一个多路复用器类,它基本上需要等到其中一个源通知它有一个要处理的数据包。在 C# 中我可以做到这一点
WaitHandle.WaitAny(handle_array)
其中 handle_array 包含对每个源元素的 WaitHandle 引用。
提前谢谢你。
【问题讨论】:
标签: multithreading qt
QWaitCondition 适合你吗?
【讨论】:
QSemaphore 呢?
好吧,在我看来,解决这个问题的方法是在线程列表中仅共享一个 QWaitCondition 实例,这些线程可以发出所需的等待信号,这取决于我们是否想要 .NET 等效于 WaitHandle.WaitAny( ) 或 WaitHandle.WaitAll() 在等待线程中等待 one 或 n 信号。在后一种情况下,真正重要的是确保所有发出的信号都由所有线程之间的互斥量共享保护,以确保在计算触发信号和再次设置等待之间不会丢失信号。
【讨论】: