Auto-与ManualResetEvent,差异

时间:2013-03-14 17:32:55

标签: c# .net multithreading

我读到了关于事件的事件,它允许我等待其他线程:AutoResetEventManualResetEvent

这两个班级有什么区别?对于高度并发的程序,哪个类更好?

1 个答案:

答案 0 :(得分:2)

区别在于事件发出信号(设置)时会发生什么。

  • 手动重置事件将保持信号状态,直到您再次明确重置
  • 一旦等待它的第一个线程被唤醒,自动重置事件将自动重置(无信号)

一般来说,我发现使用手动重置事件更容易,因为在大多数情况下,在任何给定时间确定事件的状态会更直接。

也就是说,有些情况下自动重置事件的行为更有利于实现同步,因为您可以保证只有一个等待线程将发出信号。因此,如果您有一个生产者/多个消费者场景,其中任何一个消费者应该发出信号,那么您应该考虑自动重置事件。