Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 信号量上的等待线程计数和工作线程计数_C#_Multithreading_Semaphore - Fatal编程技术网

C# 信号量上的等待线程计数和工作线程计数

C# 信号量上的等待线程计数和工作线程计数,c#,multithreading,semaphore,C#,Multithreading,Semaphore,有没有办法找到那个 有多少线程在等待信号量 目前有多少线程占用了信号量 若我使用threadpool线程来等待信号量,那个么如何让主线程等待直到threadpool线程完成 谢谢。这是线程同步中禁止使用的知识。因为完全不可能做到这一点。它代表了一个无法解决的竞赛条件。当您使用Habjan的方法时,您会得出结论,比如说,有两个线程正在等待。一微秒后,另一个线程调用WaitOne(),有三个线程。但你会根据陈旧的价值观做出决定 比赛条件没什么好搞的,它们很难调试。他们习惯于让你的代码每周只失败一次。

有没有办法找到那个

  • 有多少线程在等待信号量
  • 目前有多少线程占用了信号量
  • 若我使用threadpool线程来等待信号量,那个么如何让主线程等待直到threadpool线程完成
  • 谢谢。

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

    比赛条件没什么好搞的,它们很难调试。他们习惯于让你的代码每周只失败一次。一旦您添加检测代码以尝试诊断代码失败的原因,它们就会停止发生,因为添加的代码更改了计时


    永远不要这样做。

    如果我使用Thread类,第三点可以解决。但是前两点呢?什么样的信号灯?信号量、信号量LIM或Windows信号量对象?它是信号量。不是SemSlim或windows信号量对象。