自旋鎖
1.什麼是自旋鎖?
當一個線程需要在獲取鎖的時候,此時正好有其他線程佔用着鎖,那麼此時該線程將會進入循環等待模式,直到成功獲取到鎖纔會退出循環,因此稱爲自旋鎖。
2.什麼時候用到自旋鎖?自旋鎖的適用場景?
1)單核處理器
2)多核處理器
3.自旋鎖的優缺點?
自旋鎖可以避免上下文切換,但是由於獲取到鎖的時間不確定,當獲取鎖需要時間太長的時候,自旋鎖的死循環等待模式會造成CPU浪費,導致性能緩慢。
4.自旋鎖的特點?
1)被自旋鎖保護的臨界區代碼執行時不能睡眠。單核處理器下,獲取到鎖的線程睡眠,若恰好此時CPU調度的另一個執行線程也需要獲取這個鎖,則會造成死鎖;多核處理器下,若想獲取鎖的線程在同一個處理器下,同樣會造成死鎖,若位於另外的處理器,則會長時間佔用CPU等待睡眠的線程釋放鎖,從而浪費CPU資源。
2)被自旋鎖保護的臨界區代碼執行時不能被其他中斷打斷。
3)被自旋鎖保護的臨界區代碼在執行時,內核不能被搶佔。
更過鎖類型知識可以查看文檔:https://www.cnblogs.com/qifengshi/p/6831055.html