日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Pthreads mutex vs Pthreads spinlock

發布時間:2024/9/30 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pthreads mutex vs Pthreads spinlock 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://www.searchtb.com/2011/01/pthreads-mutex-vs-pthread-spinlock.html


鎖機制(lock) 是多線程編程中最常用的同步機制,用來對多線程間共享的臨界區(Critical Section) 進行保護。

Pthreads提供了多種鎖機制,常見的有:
1) Mutex(互斥量):pthread_mutex_***
2) Spin lock(自旋鎖):pthread_spin_***
3) Condition Variable(條件變量):pthread_con_***
4) Read/Write lock(讀寫鎖):pthread_rwlock_***

在多線程編中,根據應用場合的不同,選擇合適的鎖來進行同步,對多線程程序的性能影響非常大. 本文主要對 pthread_mutex 和 pthread_spinlock 兩種鎖制機進行比較,并討論其適用的場合.

1 Pthread mutex

Mutex屬于sleep-waiting類型的鎖. 從 2.6.x 系列穩定版內核開始, Linux 的 mutex 都是 futex (Fast-Usermode-muTEX)鎖.
futex(快速用戶區互斥的簡稱)是一個在Linux上實現鎖定和構建高級抽象鎖如信號量和POSIX互斥的基本工具。它們第一次出現在內核開發的2.5.7版;其語義在2.5.40固定下來,然后在2.6.x系列穩定版內核中出現。
Futex 是由Hubertus Franke(IBM Thomas J. Watson 研究中心), Matthew Kirkwood,Ingo Molnar(Red Hat)和 Rusty Russell(IBM Linux 技術中心)等人創建的。
Futex 是由用戶空間的一個對齊的整型變量和附在其上的內核空間等待隊列構成. 多進程或多線程絕大多數情況下對位于用戶空間的futex 的整型變量進行操作(匯編語言調用CPU提供的原子操作指令來增加或減少),而其它情況下,則需要通過代價較大的系統調用來對位于內核空間的等待隊列進行操作(如喚醒等待的進程/線程,或 將當前進程/線程放入等待隊列). 除了多個線程同時競爭鎖的少數情況外,基于 futex 的 lock 操作是不需要進行代價昂貴的系統調用操作的.
.
這種機制的核心思想是通過將大多數情況下非同時競爭 lock 的操作放到在用戶空間來執行,而不是代價昂貴的內核系統調用方式來執行,從而提高了效率.

Pthreads提供的Mutex鎖操作相關的API主要有:
1、 pthread_mutex_lock (pthread_mutex_t *mutex);
2、 pthread_mutex_trylock (pthread_mutex_t *mutex);
3、 pthread_mutex_unlock (pthread_mutex_t *mutex);

因為源代碼比較長,這里不做摘錄,大家可以參考:
glibc-2.12.2/nptl/pthread_mutex_lock.c

2 Pthread spinlock

spinlock,也稱自旋鎖,是屬于busy-waiting類型的鎖.在多處理器環境中, 自旋鎖最多只能被一個可執行線程持有。如果一個可執行線程試圖獲得一個被爭用(已經被持有的)自旋鎖,那么該線程就會一直進行忙等待,自旋,也就是空轉,等待鎖重新可用。如果鎖未被爭用,請求鎖的執行線程便立刻得到它,繼續執行。

一個被爭用的自旋鎖使得請求它的線程在等待鎖重新可用時自旋,特別的浪費CPU時間,所以自旋鎖不應該被長時間的持有。實際上,這就是自旋鎖的設計初衷,在短時間內進行輕量級加鎖。

Kernel中的自旋鎖不能夠在能夠導致睡眠的環境中使用。舉個例子,一個線程A獲得了自旋鎖L;這個時候,發生了中斷,在對應的中斷處理函數B中,也嘗試獲得自旋鎖L,就會中斷處理程序進行自旋。但是原先鎖的持有者只有在中斷處理程序結束后,采用機會釋放自旋鎖,從而導致死鎖。
由于涉及到多個處理器環境下,spin lock的效率非常重要。因為在等待spin lock的過程,處理器只是不停的循環檢查,并不執行其他指令。但即使這樣, 一般來說,spinlock的開銷還是比進程調度(context switch)少得多。這就是spin lock 被廣泛應用在多處理器環境的原因


原博客還有更為詳細的對比


總結的話,就是被spinlock鎖住的線程要不停的自旋空轉,檢查鎖是否能用,所以很占cpu資源,但是它的好處在于,如果線程數量和cpu數量相仿時,并發的效率會極大的提升

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的Pthreads mutex vs Pthreads spinlock的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产免费视频一区二区三区 | 亚洲一区二区三区免费在线观看 | av大帝在线观看 | 欧美性生交大片免费看app麻豆 | 精品视频99 | 河北彩花中文字幕 | 欧美三级欧美成人高清 | 欧美在线视频一区 | 狠狠热视频 | 精品国产鲁一鲁一区二区三区 | 黄色视屏在线免费观看 | av国产网站| 毛片毛片毛片毛片毛片毛片毛片 | 欧美在线视频网 | 久久国产视频播放 | 操出白浆视频 | 久久久av片 | 国产精品久久伊人 | 视频在线观看一区二区 | 韩国三级hd中文字幕的背景音乐 | 三级三级久久三级久久18 | 国产一区二区精彩视频 | 亚洲国产一级 | 亚洲国产成人精品一区二区三区 | 2025国产精品视频 | 久久综合日本 | 亚洲免费一区视频 | 国产做a| 中文字幕专区 | 色婷婷国产精品 | 成人午夜视频在线播放 | 黄色网址在线免费播放 | 精品欧美视频 | 极品尤物一区二区 | 久久大奶| 黑人操少妇 | 中文字幕第七页 | 欧美大尺度做爰啪啪床戏明星 | 丝袜综合网 | 超碰免费97 | 91青青草 | 福利免费观看 | 人与禽一级全黄 | 天堂国产 | 亚洲精品小视频在线观看 | 日韩中文字幕在线 | 欧美日韩一区二区在线视频 | 色一情一区二区三区四区 | 欧美高清在线观看 | av手机天堂| 国产精品久久久毛片 | 国产福利在线视频观看 | 久久波多野 | 桥本有菜aⅴ一区二区三区 在线午夜电影 | 久久国产区 | 男人添女人下部高潮全视频 | 亚洲成av人片在线观看无码 | 欧美18免费视频 | 最新成人 | 91传媒在线视频 | 欧美三级影院 | 蜜桃成人在线观看 | 中文字幕无线码一区 | 国产婷婷综合 | 国产视频在线观看一区二区 | 亚洲国产精品电影 | 欧美激情视频一区二区三区 | 国产噜噜噜噜久久久久久久久 | 成人黄色短视频在线观看 | 免费人成网| 国产一区黄色 | 久久九 | 国产欧洲亚洲 | 丝袜熟女一区二区 | 国产无码日韩精品 | 日韩有码中文字幕在线观看 | 成人黄色网 | 日本少妇xxxx动漫 | 国产精品白丝喷水在线观看 | 免费在线国产视频 | 国产精品理论在线观看 | 欧美成人乱码一二三四区免费 | 久久精品视频在线观看 | 国产精品美女久久久久久 | 中文字幕人妻熟女在线 | 在线天堂在线 | 久久成年视频 | 中文字幕av高清 | 人人妻人人澡人人爽久久av | 亚洲射射射 | 国产精品美女久久 | 超碰成人在线免费观看 | 国产成人精品免费在线观看 | 亚洲无码久久久久 | av资源吧首页 | 欧美操操 | 欧美一区二区性久久久 | 特级西西444www高清大胆免费看 | 男人的亚洲天堂 |