自旋锁 自旋锁是计算机科学用于多线程同步的一种锁线程反复检查锁变量是否可用由于线程在这一过程中保持执行因此是一种忙等待一旦获取了自旋锁线程会一直保持该锁直至显式释放自旋锁 自旋锁避免了进程上下文的调度开销因此对于线程只会阻塞很短时间的场合是有效的因此操作系统的实现在很多地方往往用自旋锁Windows操作系统提供的轻型读写锁SRW Lock内部就用了自旋锁显然单核CPU不适于使用自旋锁这里的单核CPU指的是单核单线程的CPU因为在同一时间只有一个线程是处在运行状态假设运行线程A发现无法获取锁只能等待解锁但因为A自身不挂起所以那个持有锁的线程B没有办法进入运行状态只能等到操作系统分给A的时间片用完才能有机会被调度这种情况下使用自旋锁的代价很高 获取释放自旋锁实际上是读写自旋锁的存储内存或寄存器因此这种读写操作必须是原子的通常用testandset等原子操作来实现