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