添加:好的,所以我可以分隔互斥量和信号量,我只是想知道我的反击的想法是对的吗?即Release减1和WaitOne加一,只有当计数器大于零时,才允许运行.这句话对吗?
我有一些运行良好的代码:按顺序运行first()second()third().
我只想知道信号量中的计数器是如何工作的?我知道这是反制的.该版本减去1并且WaitOne添加一个,只有当计数器大于零时,它才会允许运行.对?
但是我读了另一件关于Mutex的书,这本书说Mutex Waitone减1,并且发布添加一个,所以mutex与信号量相反?对?
码:
using System;
namespace Algorithm.MultiThread
{
class Semaphore
{
System.Threading.Semaphore s1, s2;
public Semaphore()
{
s1 = new System.Threading.Semaphore(1, 5);
s2 = new System.Threading.Semaphore(1, 5); //initialize as start counter 1
}
public void first()
{
Console.WriteLine("First");
s1.Release(); // minus one
}
public void second()
{
s1.WaitOne(); //add one two times
s1.WaitOne();
Console.WriteLine("Second");
s2.Release();
}
public void third()
{
s2.WaitOne(); // add one two times
s2.WaitOne();
Console.WriteLine("Third");
}
public void startnum(object obj)
{
int i = …Run Code Online (Sandbox Code Playgroud)