原型:
typedef struct {
volatile int counter;
} atomic_t;
1 声明
定义并初始化原子变量
atomic_t isopen = ATOMIC_INIT(1);
2 使用
原子变量自减1,并测试是否为0,如果为0,返回true,否则返回false
if( !atomic_dec_and_test(&isopen) ) {
atomic_inc(&isopen); //加1操作
return -EBUSY;
}
3 释放
减1操作
atomic_dec(&isopen);