1. 概述
首先看一下原子操作,原子操作就是指不能再进一步分割的操作,表面上的含义是当一个原子变量被操作时,不可能有第二个线程或进程在对其操作,在没有原子操作的概念的时候,大多数都是使用标志位或者状态机去防止内存竞争,有了原子锁,就可以使用原子锁去解决类似的应用场景。
2. 原子锁场景分析
如下图,线程1
和线程2
分别去抢占原子变量,线程1
先抢到了,继续执行了后续逻辑,线程2
没有抢到原子变量,执行了原子变量繁忙的逻辑。
![在这里插入图片描述](https://img-blog.csdnimg.cn/76f83e29a4904b4e9ac98fd71dfb6c76.png)
如下图,假设有多个设备打开这个led
设备,进来就会判断原子变量是否等于0
,如果等于0
,说明设备被占用,返回。
static int led_open(