互斥锁是一种比较简单的、用于实现线程间对资源互斥访问的机制。由于操作互斥锁 的时间和空间开销都较低,因而较适合于高频度使用的关键共享数据和程序段。互斥锁可 以有两种状态,即开锁(unlock)和关锁(lock)状态。相应地,可用两条命令(函数)对互斥锁进 行操作。其中的关锁 lock 操作用于将 mutex 关上,开锁操作 unlock 则用于打开 mutex。
当一个线程需要读/写一个共享数据段时,线程首先应为该数据段所设置的 mutex 执行 关锁命令。命令首先判别 mutex 的状态,如果它已处于关锁状态,则试图访问该数据段的 线程将被阻塞;而如果 mutex 是处于开锁状态,则将 mutex 关上后便去读/写该数据段。在 线程完成对数据的读/写后,必须再发出开锁命令将 mutex 打开,同时还须将阻塞在该互斥 锁上的一个线程唤醒,其它的线程仍被阻塞在等待 mutex 打开的队列上。
转载于:https://my.oschina.net/jlongtian/blog/983367