刚开始学习时遇到互斥锁和互斥量这两个名词时,就是不知道他们有什么关系,百度很久也很少有相关资料(我已经在百度百科也添加了了这么一句话:互斥量又称互斥锁),后来在周立功《嵌入式Linux开发教程》上册,找到他们两者的关系顺便记录下来供大家学习和查找方便。以下为摘抄部分(如果有侵权请联系及时删除):

互斥量(Mutex), 又称为互斥锁, 是一种用来保护临界区的特殊变量, 它可以处于锁
定(locked) 状态, 也可以处于解锁(unlocked) 状态:

 1、如果互斥锁是锁定的, 就是某个特定的线程正持有这个互斥锁

2、如果没有线程持有这个互斥锁,那么这个互斥锁就处于解锁状态


每个互斥锁内部有一个线程等待队列,用来保存等待该互斥锁的线程。当互斥锁处于解
锁状态时, 如果某个线程试图获取这个互斥锁, 那么这个线程就可以得到这个互斥锁而不会
阻塞;当互斥锁处于锁定状态时, 如果某个线程试图获取这个互斥锁, 那么这个线程将阻塞
在互斥锁的等待队列内。
互斥量是最简单也是最有效的线程同步机制。程序可以用它来保护临界区,以获得对排
它性资源的访问权。另外,互斥量只能被短时间地持有,使用完临界资源后应立即释放锁。

每个互斥锁内部有一个线程等待队列,用来保存等待该互斥锁的线程。当互斥锁处于解
锁状态时, 如果某个线程试图获取这个互斥锁, 那么这个线程就可以得到这个互斥锁而不会
阻塞;当互斥锁处于锁定状态时, 如果某个线程试图获取这个互斥锁, 那么这个线程将阻塞
在互斥锁的等待队列内。
互斥量是最简单也是最有效的线程同步机制。程序可以用它来保护临界区,以获得对排
它性资源的访问权。另外,互斥量只能被短时间地持有,使用完临界资源后应立即释放锁。

摘抄自周立功的《嵌入式Linux开发教程》上册,如果有侵权请联系及时删除

另外要注意的是,还有个和互斥量很像的名词,叫信号量,这个就和互斥量是两个东西了,注意区分。

Logo

更多推荐