mtk*_*nko 3 c# multithreading semaphore
我正在学习 c# semaphore 并且不明白一点。我可以像这样初始化信号量:
var semaphore = new Semaphore(4, 6);
Run Code Online (Sandbox Code Playgroud)
很多地方都有这样的解释:
如果要为调用线程保留一些插槽,可以通过使第一个参数小于第二个参数来实现。
这是否意味着只有主线程可以使用剩余的 2 个资源槽?这是否意味着如果我这样写:
var semaphore = new Semaphore(0, 6);
Run Code Online (Sandbox Code Playgroud)
只有主线程可以使用所有 6 个插槽?
我喜欢Albahari 的解释:
信号量就像夜总会:它有一定的容量,由保镖强制执行。一旦满了,就没有更多的人可以进入,外面就排起了长队。然后,对于每个离开的人,一个人从队列的头部进入。构造函数至少需要两个参数:夜总会当前可用的位置数量和俱乐部的总容量。