中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux如何實現讀寫鎖rwlock

發布時間:2021-10-23 15:34:36 來源:億速云 閱讀:247 作者:小新 欄目:系統運維

這篇文章主要為大家展示了“Linux如何實現讀寫鎖rwlock”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Linux如何實現讀寫鎖rwlock”這篇文章吧。

讀寫鎖是另一種實現線程間同步的方式。與互斥量類似,但讀寫鎖將操作分為讀、寫兩種方式,可以多個線程同時占用讀模式的讀寫鎖,這樣使得讀寫鎖具有更高的并行性。

讀寫鎖的特性為:寫獨占,讀共享;寫鎖優先級高。對于讀寫鎖,掌握了這12個字就足矣了。

Linux環境下,讀寫鎖具有以下三種狀態:

  • 讀模式下加鎖狀態 (讀鎖)

  • 寫模式下加鎖狀態 (寫鎖)

  • 不加鎖狀態

雖然讀寫鎖有讀鎖、寫鎖、不加鎖三種狀態,但其實它只有一把鎖,而非三把。

前文提到,讀寫鎖的特性為:寫獨占,讀共享;寫鎖優先級高。具體來講:

  • 讀寫鎖是“寫模式加鎖”時, 解鎖前,所有嘗試對該鎖進行加鎖(不管是讀鎖還是寫鎖)的線程都會被阻塞;--> 寫獨占

  • 讀寫鎖是“讀模式加鎖”時, 如果線程以讀模式對其加鎖會成功;如果線程以寫模式加鎖會阻塞。--> 讀共享

  • 讀寫鎖是“讀模式加鎖”時, 既有試圖以寫模式加鎖的線程,也有試圖以讀模式加鎖的線程。那么讀寫鎖會阻塞隨后的讀模式鎖請求,優先滿足寫模式鎖。-->  寫鎖優先級高

讀寫鎖也叫共享-獨占鎖。當讀寫鎖以讀模式鎖住時,它是以共享模式鎖住的;當它以寫模式鎖住時,它是以獨占模式鎖住的。寫獨占、讀共享。

讀寫鎖非常適合于對數據結構讀的次數遠大于寫的情況。因為讀鎖是共享的,這樣可以提高并行性。

主要應用函數:

  • pthread_rwlock_init函數

  • pthread_rwlock_destroy函數

  • pthread_rwlock_rdlock函數

  • pthread_rwlock_wrlock函數

  • pthread_rwlock_tryrdlock函數

  • pthread_rwlock_trywrlock函數

  • pthread_rwlock_unlock函數

以上7 個函數的返回值都是:成功返回0,失敗直接返回錯誤號。

pthread_rwlock_t類型:用于定義一個讀寫鎖變量,比如:pthread_rwlock_t rwlock;

##pthread_rwlock_init函數

函數原型:

int pthread_rwlock_init(pthread_rwlock_t restrict rwlock, const pthread_rwlockattr_t restrict attr);

函數作用:初始化一把讀寫鎖

參數說明:

  • rwlock:傳出參數,調用時應傳&rwlock給該函數;

  • attr:表示讀寫鎖屬性,通常傳NULL,表示使用默認屬性;

##pthread_rwlock_destroy函數

函數原型:

int pthread_rwlock_destroy(pthread_rwlock_t *rwlock);

函數作用:銷毀一把讀寫鎖

##pthread_rwlock_rdlock函數

函數原型:

int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock);

函數作用:以讀方式請求讀寫鎖。(常簡稱為:請求讀鎖)

##pthread_rwlock_wrlock函數

函數原型:

int pthread_rwlock_wrlock(pthread_rwlock_t *rwlock);

函數作用:以寫方式請求讀寫鎖。(常簡稱為:請求寫鎖)

##pthread_rwlock_unlock函數

函數原型:

int pthread_rwlock_unlock(pthread_rwlock_t *rwlock);

函數作用:解鎖。

##pthread_rwlock_tryrdlock函數

函數原型:

int pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock);

函數作用:非阻塞以讀方式請求讀寫鎖(非阻塞請求讀鎖)

##pthread_rwlock_trywrlock函數

函數原型:

int pthread_rwlock_trywrlock(pthread_rwlock_t *rwlock);

函數作用:非阻塞以寫方式請求讀寫鎖(非阻塞請求寫鎖)

以上是“Linux如何實現讀寫鎖rwlock”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武定县| 甘孜县| 新郑市| 汉寿县| 图们市| 册亨县| 凤庆县| 怀化市| 平湖市| 油尖旺区| 竹北市| 紫云| 徐闻县| 和林格尔县| 抚顺县| 庆城县| 张家港市| 车致| 金山区| 阿克陶县| 吉林市| 开阳县| 阿克| 元氏县| 大石桥市| 潍坊市| 武汉市| 普兰县| 迁西县| 油尖旺区| 体育| 安泽县| 辽宁省| 凭祥市| 上栗县| 阿尔山市| 长治市| 神农架林区| 镇巴县| 沙湾县| 乌恰县|