![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8f02cb255c6bd84e0ad42230862f9f95.gif)
平台 |
内核版本 |
安卓版本 |
RK3399 |
Linux4.4 |
Android7.1 |
=>返回专栏总目录<=
一、互斥锁介绍
当已经有一个线程加锁后,其他线程加锁则就会失败,互斥锁和自旋锁对于加锁失败后的处理方式是不一样的:
- 互斥锁加锁失败后,线程会释放
CPU
,给其他线程;
- 自旋锁加锁失败后,线程会忙等待,直到它拿到锁;
互斥锁是一种「独占锁」,比如当线程 A 加锁成功后,此时互斥锁已经被线程 A
独占了,只要线程 A
没有释放手中的锁,线程 B
加锁就会失败,于是就会释放 CPU
让给其他线程,既然线程 B
释放掉了 CPU
,自然线程 B
加锁的代码就会被阻塞。