我正在尝试监视在单线程程序中并行运行的许多 HPC 作业的状态,我正在订阅 OnJobState 引发的事件,并且当监视少至三个作业时,事件状态更改将丢失并且作业被卡住运行.
我假设每个作业都需要一个线程来捕获所有事件,但我找不到有关单线程程序中事件下标限制的任何信息。
我原以为 .net 平台会将这一切都排队,但似乎并非如此。
默认情况下,事件是同步的。这意味着引发事件的对象只有在所有事件处理程序完成其工作后才会继续执行。事件处理程序将与引发事件的对象在同一线程上运行。这导致以下结论:
我使这个问题更笼统,以消除对 HPC 的混淆,看起来我无法控制事件处理程序的执行方式,因此我需要使其线程安全。