首页
/
每日頭條
/
生活
/
自旋鎖保持時間非常短
自旋鎖保持時間非常短
更新时间:2026-01-12 10:57:09

作者| 慕課網精英講師 咚咚嗆

最近總有同學問我:

對自旋鎖的介紹完全聽不懂。我猜,這是一種線程的鎖定,直到這個線程不用這個資源了,才會徹底解鎖,讓出線程。但是希望得到嚴謹的解答,謝謝。

這個問題要從自旋鎖的實現去回答。自旋鎖是用于多線程同步的一種鎖,線程反複檢查鎖變量是否可用。由于線程在這一過程中保持執行,因此是一種忙等待,也即是名字中“自旋”本身的含義。

自旋鎖在不同語言都有不同的實現,但核心邏輯都是一樣的,你可以看做是一個死循環去判斷鎖變量是否可用,如果可用則跳出循環,否則繼續死循環。

邏輯如下:

void spin_lock(lock)

{

while (test_and_set(lock, true));// 鎖可用則返回,否則繼續循環

}

生産者每次加一前後都會加鎖和解鎖,那解鎖後,鎖變量可用,消費者線程就有機會進行減一操作了。那不就是和互斥鎖一樣了嗎?

自旋鎖保持時間非常短(如何理解自旋鎖)1

是的,就鎖的使用上,自旋鎖的使用方式和互斥鎖的使用并無太大區别,但需要注意的是,自旋鎖等待的過程是100%一個核的CPU的,也即是不會讓出CPU,這一點和其他鎖不同。這一點在課程中,有詳細的演示。

既然這種鎖會100%占用CPU,那為什麼計算機需要有自旋鎖這種鎖,對計算機的性能有什麼好處呢?

這是好問題,為什麼計算機内部的實現需要自旋鎖,這需要聯系前面學習的知識。

通過前面的學習我們知道,進程或者線程在運行的時候,是有上下文的,當不同線程進行切換的時候,為了讓線程可以運行起來,需要很多的準備工作,這個準備工作,我們稱為“上下文切換”。

在CPU的一個核中,每秒鐘可會進行萬級~十萬級别的上下文切換次數,每次上下文切換都需要一定的成本,因此頻繁的上下文切換會對計算機性能造成較大的影響。

鎖的好處就是它隻是忙等待,線程始終在運行,相比互斥鎖的使用,避免了上下文切換。

所以這也限定了互斥鎖的使用範圍,如果互斥鎖等待的時間過長,那麼由于它本身對CPU的占用,會導緻别的線程無法使用CPU。

因此,互斥鎖适用于可預見等待時間很短的多線程同步場景,而對于等待時間不可預測或者等待時間很長的場景,仍然是互斥鎖具備更高的效率。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
星球父子的日常搞笑
星球父子的日常搞笑
搞笑合集第一章老八返祖這一天,一隻小兔子正在草地上蹦迪,老八突然從天上掉了下來,屁股正好把正在蹦迪的小兔子給用屁臭死了。本來他光坐一下是沒事的,但他卻放了個昆,把小兔子給臭死了。老八把小兔子給烤了,帶屁的兔子肉,老八大喊,爽!香!好吃!這個...
2026-01-12
蜜蜂越冬箱養法
蜜蜂越冬箱養法
根據環境不同,蜜蜂不一定都需要室内越冬,一般隻要冬天保證足夠的食物,蜜蜂就能安全過冬,而在天氣比較惡劣的時候,室内越冬可以很好地保護蜂群免受侵害。室内越冬與室外越冬有何不同?在室内越冬蜜蜂比在室外越冬對蜜蜂要好。在寒冷地區,室外越冬的蜜蜂要...
2026-01-12
300環用時最短紀錄
300環用時最短紀錄
今年賽季已經拉開帷幕,環意大利職業公路自行車賽剛剛結束,環法國職業公路自行車賽即将舉行,但是,大家在看這些頂級自行車大賽的時候,是不是總是看的雲裡霧裡的呢?在相關賽事的直播和報道中,各種相關術語,你是否搞的清楚呢?今天小編就整理出來有關公路...
2026-01-12
最好看的松樹盆景造型
最好看的松樹盆景造型
大雪壓青松,青松挺且直。要知松高潔,待到雪化時。--陳毅《青松》古人說門前松、門後竹。松樹從古到今深受人們的喜歡,贊美松樹的詩詞不計其數。家養的松樹盆景養得好,一點也不比山間的遜色。松樹不畏嚴寒,就算是在嚴寒時分也非常挺拔。許多文人都自比松...
2026-01-12
魚身上這塊肉緻癌
魚身上這塊肉緻癌
縱觀餐桌上的各類美食,最值得大家關注的其實還是“肉類食品”;而在各種美味肉食中,魚類是建議大家每天都要進食的一類食材;魚肉味道鮮美且營養充足,食用對于身體而言有着多種積極的意義;正因為如此,魚肉應該吃,更應“安全健康”食用,一篇“食肉美文”...
2026-01-12
Copyright 2023-2026 - www.tftnews.com All Rights Reserved