在Semaphore上等待线程数和工作线程数

时间:2011-03-30 11:13:01

标签: c# multithreading semaphore

有没有办法找到那个

  1. 等待信号量的线程数是多少?
  2. 目前有多少线程占用信号量?
  3. 如果我使用线程池线程等待信号量,如何让主线程等到线程池线程完成。
  4. 感谢。

1 个答案:

答案 0 :(得分:7)

这是线程同步中的禁止知识。因为完全不可能做到这一点。它代表了无法解决的竞争条件。当你使用Habjan的方法时,你会得出结论,有两个线程在等待。一个微秒后另一个线程调用WaitOne(),有三个。但是你会根据陈旧的价值做出决定。

竞争条件没什么好处的,它们难以调试。他们习惯于每周只让你的代码失败一次。只要添加仪器代码以尝试诊断代码失败的原因,它们就会停止发生,因为添加的代码会改变时间。

从不这样做。