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