首页
/
每日頭條
/
生活
/
自旋鎖保持時間非常短
自旋鎖保持時間非常短
更新时间:2025-11-26 02:05:26

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

最近總有同學問我:

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

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

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

邏輯如下:

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
推荐阅读
家居清潔妙招:白蘿蔔擦料理台
家居清潔妙招:白蘿蔔擦料理台
家居清潔妙招:白蘿蔔擦料理台家居清潔妙招1、過期牛奶擦家具因為牛奶中含油脂,用一塊幹淨的抹布放到牛奶裡浸一下,然後用此抹布擦桌、椅、電視櫃等,家具會很有光澤。等牛奶滲透一會兒後,一定要記得再用清水擦一遍,不然會有牛奶殘留的奶臭味。2、冰塊去除口香糖有些孩子喜歡吃口香糖,不小心會弄到地毯上。粘在地毯上...
2025-11-26
為什麼下眼皮總是跳
為什麼下眼皮總是跳
眼皮跳并不一定是好的征兆以前人們常說的左眼跳财右眼跳災也并不一定是正确的,任何事情都是有兩面性的,在看到它好的一面的同時也應該注意到,他會有不好的一面。盡管這個左眼跳災右眼跳災病不一定會帶來好運,但是它可能會是一種病是一定的。所以發現了一定要及時的就醫,萬一它真的是一種病呢,及時治療了對我們是有好處...
2025-11-26
最全的生活常識大全
最全的生活常識大全
最全的生活常識大全最全的生活常識大全1、金黴素軟膏,是一種眼藥,塗在脂肪粒上可以消脂肪粒。2、白糖,少量白糖加在洗面奶裡洗臉,對去黑色痘印非常有效,有磨砂膏的效果。3、橙子,晚上洗臉後用橙子皮或橙子果泥塗臉上,可以使皮膚防幹燥,令皮膚水當當的很舒服。4、酸奶+香蕉泥,敷臉可以縮毛孔。5、氯黴素注射液...
2025-11-26
小區隔離上班怎麼辦?
小區隔離上班怎麼辦?
01可以在單位開一張證明看行不行,如果不行,就聽從公司安排,該線上辦公的線上辦公,該停工的好好遵守,疫情很快就能過去。小區隔離上班怎麼辦?小區不讓出去還真的沒有什麼辦法,他們也是在執法上級的指示,全國都是這樣的,你可以在單位開一張證明看看行不行?如果還是不行,那就隻能是别出去了,老老實實的呆在家裡吧...
2025-11-26
炭雕的搭配知識與保養方法
炭雕的搭配知識與保養方法
炭雕的搭配知識與保養方法炭雕的搭配知識1、可以持續吸附空氣中各種有毒氣體(一氧化氮、二氧化氮、甲醛、苯及其同系物、氨、氡、二氧化硫等)、煙霧、異味等,能有效淨化空氣,消除空氣污染,維護人體健康。2、能有效遏制黴菌及微生物繁衍,抑菌抑螨,調濕防黴。3、能阻隔電磁波,有效防止家用電器如電視、電腦、移動電...
2025-11-26
Copyright 2023-2025 - www.tftnews.com All Rights Reserved