互斥锁 互斥锁英語Mutual exclusion缩写 Mutex是一种用于多线程编程中防止两条线程同时对同一公共资源比如全域變數进行读写的机制该目的通过将代码切片成一个一个的临界区域critical section达成临界区域指的是一块对公共资源进行存取的代码并非一种机制或是算法一个程序进程线程可以拥有多个临界区域但是并不一定会应用互斥锁 需要此机制的资源的例子有旗标队列计数器中断处理程序等用于在多条并行运行的代码间传递数据同步状态等的资源维护这些资源的同步一致和完整是很困难的因为一条线程可能在任何一个时刻被暂停休眠或者恢复唤醒 例如一段代码甲正在分步修改一块数据这时另一条线程乙由于一些原因被唤醒如果乙此时去读取甲正在修改的数据而甲碰巧还没有完成整个修改过程这个时候这块数据的状态就处在极大的不确定状态中读取到的数据当然也是有问题的更严重的情况是乙也往这块地方写数据这样的一来后果将变得不可收拾因此多个线程间共享的数据必须被保护达到这个目的的方法就是确保同一时间只有一个临界区域处于运行状态而其他的临界区域无论是读是写都必须被挂起并且不能获得运行机会