-3

我阅读了有关事件,它允许我等待其他线程:AutoResetEventManualResetEvent.

这两个类有什么区别?哪个类更适合高并发程序?

4

1 回答 1

4

不同之处在于事件发出信号(设置)时会发生什么。

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

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

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

于 2013-03-14T17:35:11.487 回答