信号量与互斥锁
学习Mutex的心得,不一定对,先记录一下。 同步技术分为两大类,锁定和信号同步。 锁定分为:Lock、Monitor 信号同步分为:AutoResetEvent、ManualResetEvent、Semaphore以及Mutex。他们都继承自WaitHandle, AutoResetEvent、ManualResetEvent在内存中维护一个布尔型变量,如果为false则阻塞,如果为true则解除阻塞 Semaphore在内存中维护一个整型变量,如果为0则阻塞,如果大于0则解除阻塞,每解除一个阻塞其值减一 AutoResetEvent、ManualResetEvent、Semaph提供单进程内的线程同步 Mutex提供跨应用程序域的线程阻塞和解除的能力,主要用于互斥访问。 下面是一个使用Mutex进行互斥访问的演示例子。 软件打开时,如果接收到输入则创建一个互斥锁,并持有锁,直到再次接收到输入,然后释放锁,如果再次输入又创建锁, 如此循环。 假设app1创建一个互斥锁,然后持有锁,并对共享资源进行操作,那么app2就不能再次创建互斥锁,据此就能判断共享资源释放被别的进程占用。 如果app1使用完了共享资源,释放了互斥锁,则app2就可以创建互斥锁,据此可以判断共享资源可以被访问了。 以下是app1代码 1、Mutex用于进程间的同步 using System; using