【问题标题】:Qt - Is there an equivalent to C# WaitHandle.WaitAny(EventWaitHandle [])?Qt - 是否有等效于 C# WaitHandle.WaitAny(EventWaitHandle [])?
【发布时间】:2014-03-29 08:31:42
【问题描述】:

我正在编写一个多路复用器类,它基本上需要等到其中一个源通知它有一个要处理的数据包。在 C# 中我可以做到这一点

WaitHandle.WaitAny(handle_array)

其中 handle_array 包含对每个源元素的 WaitHandle 引用。

提前谢谢你。

【问题讨论】:

    标签: multithreading qt


    【解决方案1】:

    QWaitCondition 适合你吗?

    【讨论】:

    • 不是真的,因为我一次只能等待一个条件。实现等价的 WaitHandle.WaitAll() 没问题,因为我可以一个接一个地等待所有源,但在我的情况下,我只需要一个最快的源来通知和处理该数据包。
    • QSemaphore 呢?
    【解决方案2】:

    好吧,在我看来,解决这个问题的方法是在线程列表中仅共享一个 QWaitCondition 实例,这些线程可以发出所需的等待信号,这取决于我们是否想要 .NET 等效于 WaitHandle.WaitAny( ) 或 WaitHandle.WaitAll() 在等待线程中等待 onen 信号。在后一种情况下,真正重要的是确保所有发出的信号都由所有线程之间的互斥量共享保护,以确保在计算触发信号和再次设置等待之间不会丢失信号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多