2011-03-30 113 views
1

工作线程数有没有办法找到等待的线程数和信号量

  1. 多少线程正在等待信号?
  2. 目前有多少线程占用信号量?
  3. 如果我使用线程池线程来等待信号量,如何让主线程等待线程池线程完成。

谢谢。

+0

如果我使用Thread类,则可以解决第三点。但是前两点呢? – Azodious 2011-03-30 11:22:24

+0

什么样的信号量? Semaphore,SemaphoreSlim或Windows信号量对象? – 2011-03-30 11:28:27

+0

它是一个信号量。不是SemSlim或Windows信号量对象。 – Azodious 2011-03-30 11:37:20

回答

7

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

竞争条件没有什么可混淆的,它们难以置信地难以调试。他们习惯于让您的代码每周只能失败一次。只要您添加工具代码以尝试诊断代码失败的原因,它们就会停止发生,因为添加的代码改变了时间。

从来没有做到这一点。

+0

好的...明白了你的观点。 – Azodious 2011-03-31 11:28:52