mutex,semaphore,autoresetevent,manualResetevent四个类都继承自waitHandle类,其中autoresetevent,manualResetevent都继承自EventWaitHandle,且EventWaitHandle的构造函数提供了一个入参EventResetMode来设置为manualreset还是autoreset,故我们只需查看mutex,semaphore,eventwaithandle的区别即可。
观察这三个类的函数,发现大部分函数都是相同的,不同的就是
mutex类包含 public void ReleaseMutex();
semaphore包含 public int Release(); public int Release(int releaseCount);
EventWaitHandle包含 public bool Reset(); public bool Set();
再来看三个类的定义
mutex:A synchronization primitive that can also be used for interprocess synchronization. 一个原语同步,也可用于进程间同步
semaphore:Limits the number of threads that can access a resource or pool of resources concurrently. 限制访问资源的线程个数
EventWaitHandle:Represents a thread synchronization event. 线程的同步信号
1.mutex,互斥锁,一般用于资源竞争时对临界区的保护:
实例:
class Program
{
static Mutex myMutex; //互斥锁
static void UserResource()
{
myMutex.WaitOne(); //多个线程竞争,等待锁
Console.WriteLine("get resource&#