一、什么是自旋锁?
自旋锁的定义:当一个线程尝试去获取某一把锁的时候,如果这个锁已经被另外一个线程占有了,那么此线程就无法获取这把锁,该线程会等待,间隔一段时间后再次尝试获取。这种采用循环加锁,等待锁释放的机制就称为自旋锁(spinlock)。
Spinlock 是内核中提供的一种比较常见的锁机制,自旋锁是“原地等待”的方式解决资源冲突的,即,一个线程获取了一个自旋锁后,另外一个线程期望获取该自旋锁,获取不到,只能够原地“打转”(忙等待)。由于自旋锁的这个忙等待的特性,注定了它使用场景上的限制 —— 自旋锁不应该被长时间的持有(消耗 获取自旋锁的CPU 资源)。
spinlock是专为防止多处理器并发而引入的一种锁。
二、为什么需要自旋锁?
在多线程和多核程序里,会有一些资源需要互斥访问。例如共享RAM区的读写操作,当RAM区数据量大时,一个指令周期无法完成读写操作,然而中断或者其他核也来读写此RAM区,就会导致数据的一致性被破坏,严重的情况下会影响实际的功能。为了避免出现这种情况,操作


659

被折叠的 条评论
为什么被折叠?



