原子操作
在x86平台上,总的来说,CPU提供三种独立的原子锁机制:原子
保证操作、加LOCK指令前缀和缓存一致性协议。
自旋锁
是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。获取锁的线程一直处于活跃状态,但是并没有执行任何有效的任务,使用这种锁会造成busy-waiting。
互斥锁
简单来说互斥锁在拿不到锁的时候休眠,而自旋锁一直尝试获取锁。
无锁环形缓冲
环形缓冲区通常有一个读指针和一个写指针。读指针指向环形缓冲
区中可读的数据,写指针指向环形缓冲区中可写的数据。通过移动读指
针和写指针就可以实现缓冲区的数据读取和写入。