如何在超过64个句柄上实现waitAny
?
我有一个简单的问题,我有很多线程工作直到数据结束,当线程是数据结束然后发信号通知我运行这个waitAny
的空闲线程并给他下一个数据包。< / p>
答案 0 :(得分:5)
您可能需要考虑为'waitAny'线程等待通知数据包的队列。当您的众多线程中的一个完成它的操作时,它会在队列中放置一个通知数据包。您的waitAny
会在单个事件上变成等待,表示队列中有某些内容。
答案 1 :(得分:3)
使用其他线程实现级联等待以等待WaitHandles包,并在层次结构上发出信号。
或者在没有实际等待的情况下以批量测试它们(没有设置超时)
答案 2 :(得分:1)
有效等待受API MAXIMUM_WAIT_OBJECTS
限制为64.除了重新设计您的应用程序以使用更少的句柄之外,您可以切换到轮询模式(等待每个64分别使用零超时,并等待如果没有信号通知所有句柄,则返回小的非零数量),或拆分对象并在多个执行线程之间等待。
您可能还想重温之前的讨论,例如