其作用是為了解決某項(xiàng)資源的互斥使用。因?yàn)樽孕i不會(huì)引起調(diào)用者睡眠,所以自旋鎖的效率遠(yuǎn)高于互斥鎖。">

自旋鎖和互斥鎖的區(qū)別

回答
愛揚(yáng)教育

2022-06-22

  • 相關(guān)推薦
  自旋鎖與互斥鎖有點(diǎn)類似,只是自旋鎖不會(huì)引起調(diào)用者睡眠,如果自旋鎖已經(jīng)被別的執(zhí)行單元保持,調(diào)用者就一直循環(huán)在那里看是否該自旋鎖的保持者已經(jīng)釋放了鎖,"自旋"一詞就是因此而得名。
  其作用是為了解決某項(xiàng)資源的互斥使用。因?yàn)樽孕i不會(huì)引起調(diào)用者睡眠,所以自旋鎖的效率遠(yuǎn)高于互斥鎖。

擴(kuò)展資料

  兩種鎖的加鎖原理

  互斥鎖:線程會(huì)從sleep(加鎖)——>running(解鎖),過程中有上下文的切換,cpu的搶占,信號(hào)的發(fā)送等開銷。

  自旋鎖:線程一直是running(加鎖——>解鎖),死循環(huán)檢測(cè)鎖的標(biāo)志位,機(jī)制不復(fù)雜。

  互斥鎖屬于sleep-waiting類型的鎖。例如在一個(gè)雙核的機(jī)器上有兩個(gè)線程(線程A和線程B),它們分別運(yùn)行在Core0和

  Core1上。假設(shè)線程A想要通過pthread_mutex_lock操作去得到一個(gè)臨界區(qū)的鎖,而此時(shí)這個(gè)鎖正被線程B所持有,那么線程A就會(huì)被阻塞

天等县| 松原市| 恩平市| 黄浦区| 乌恰县| 扶沟县| 合江县| 永安市| 沾化县| 崇左市| 冕宁县| 昆明市| 澄城县| 桃园县| 潞城市| 黄山市| 绥滨县| 临安市| 察隅县| 福贡县| 江口县| 呈贡县| 平原县| 瑞昌市| 丹阳市| 旅游| 麦盖提县| 崇信县| 望都县| 武清区| 台北县| 军事| 三明市| 武定县| 嘉兴市| 塔河县| 锦州市| 枞阳县| 江北区| 宁安市| 县级市|