我并行运行一些任务,通常一次运行 4 个。对于一个测试,我需要一个屏障,因此它们在这一点上是同步的。
然后,屏障配置为new Barrier(4);
.问题是,有时可能会发生异常,这可能导致任务在某个点停止并且不再到达障碍。
这会让屏障永远等待,我该如何解决这个问题?是否可以配置超时来释放障碍,并测试直到那一刻之前到达障碍的障碍?
这个问题与这篇文章有关
如果我理解正确,即使第 3 个任务失败,您也希望 4 个任务继续。在这种情况下,您可以使用 SignalAndWait (Int32( 重载仅在指定的时间段内等待其他参与者。