【发布时间】:2011-02-12 12:02:34
【问题描述】:
我一直在使用 AutoResetEvent 在线程之间进行同步。
- 一些线程(A-F)调用 autoresetevent.WaitOne();在等待另一个线程 (X) 完成其工作时
- 虽然拥有 autoresetevent 的线程 (X) 完成其工作,然后调用 .Set();
但是,只有一个等待线程 (A-F) 未被阻塞。 - 当线程(X)完成它的工作时,我怎样才能让它们全部解除阻塞?
我想我使用了错误的同步原语 - 我应该使用什么以及如何使用?
代码示例将是理想的
【问题讨论】:
-
听起来你也想同步 A-F 线程。更多信号或 ManualResetEvent + Interlocked 计数器可能会起作用。
-
问题是我不知道 A-F 中有多少线程,所以我不能调用 set 正确的次数
-
您在寻找Monitor.PulseAll吗?
-
@Ani 我将如何使用 monitor.pulseAll ?会比下面提到的manualresetevent更好吗?
-
你应该仔细考虑 ReaderWriterLockSlim
标签: c# .net multithreading