自旋锁
1.什么是自旋锁?
当一个线程需要在获取锁的时候,此时正好有其他线程占用着锁,那么此时该线程将会进入循环等待模式,直到成功获取到锁才会退出循环,因此称为自旋锁。
2.什么时候用到自旋锁?自旋锁的适用场景?
1)单核处理器
2)多核处理器
3.自旋锁的优缺点?
自旋锁可以避免上下文切换,但是由于获取到锁的时间不确定,当获取锁需要时间太长的时候,自旋锁的死循环等待模式会造成CPU浪费,导致性能缓慢。
4.自旋锁的特点?
1)被自旋锁保护的临界区代码执行时不能睡眠。单核处理器下,获取到锁的线程睡眠,若恰好此时CPU调度的另一个执行线程也需要获取这个锁,则会造成死锁;多核处理器下,若想获取锁的线程在同一个处理器下,同样会造成死锁,若位于另外的处理器,则会长时间占用CPU等待睡眠的线程释放锁,从而浪费CPU资源。
2)被自旋锁保护的临界区代码执行时不能被其他中断打断。
3)被自旋锁保护的临界区代码在执行时,内核不能被抢占。
更过锁类型知识可以查看文档:https://www.cnblogs.com/qifengshi/p/6831055.html