原子操作
C语言可以嵌入汇编
中断控制
原子操作只适合于单体变量
自旋锁
控制中断只能控制本地 CPU 的中断,无法控制其它 CPU 核心的中断。
必须保证读取锁变量和判断并加锁的操作是原子执行的,由硬件解决。x86 CPU 给我们提供了一个原子交换指令,xchg,它可以让寄存器里的一个值跟内存空间中的一个值做交换。
在中断处理程序访问某个自旋锁保护的某个资源时,依然有问题,所以我们要写的自旋锁函数必须适应这样的中断环境。具体的汇编有点看不懂。。
信号量
解决了上面的长时间等待问题。