针对一些并发代码,我希望能够将一系列信号连接在一起,就像一个电路一样。在.NET中,我们可以对一组信号执行WaitAll或WaitAny操作。我想要做的是:
WaitAny ( WaitAll (c1, c2), WaitAll (c3, c4) ) ;
很遗憾,该库不支持将这些操作组合成更复杂的树形结构。我的问题是(1)有没有办法在.NET中实现这个功能?(2)有没有任何语言的高效库可以做到这一点?
[编辑:Cory要求提供更多细节]
我想构建一个消息传递库。可能会有10K个小型并发队列,其中一些带有消息。我想从队列中获取消息并执行分配给队列的处理程序。但是,在处理程序完成之前,我无法获取下一条消息(每个队列单线程)。因此,我真正想要的是在弹出和执行下一个项目之前等待队列(是否有消息?)和代码(是否完成上一个消息?)。
WaitAll
并设置较低的超时时间。仍然不可扩展。 WaitAny返回您传递的数组中对象的索引,因此您知道哪个信号被触发。也许您可以更新您的问题,并尝试寻找比您描述的WaitAny(WaitAll(),WaitAll())方法更好的解决方案。 - Cory Charlton