成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux系統編程—讀寫鎖rwlock

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

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

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

[[344013]]

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函數

函數原型:

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

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

參數說明:

  • rwlock:傳出參數,調用時應傳&rwlock給該函數;
  • attr:表示讀寫鎖屬性,通常傳NULL,表示使用默認屬性;

##pthread_rwlock_destroy函數

函數原型:

  1. int pthread_rwlock_destroy(pthread_rwlock_t *rwlock); 

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

##pthread_rwlock_rdlock函數

函數原型:

  1. int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock); 

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

##pthread_rwlock_wrlock函數

函數原型:

  1. int pthread_rwlock_wrlock(pthread_rwlock_t *rwlock); 

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

##pthread_rwlock_unlock函數

函數原型:

  1. int pthread_rwlock_unlock(pthread_rwlock_t *rwlock); 

函數作用:解鎖。

##pthread_rwlock_tryrdlock函數

函數原型:

  1. int pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock); 

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

##pthread_rwlock_trywrlock函數

函數原型:

  1. int pthread_rwlock_trywrlock(pthread_rwlock_t *rwlock); 

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

本文授權轉載自公眾號「良許Linux」。良許,世界500強外企Linux開發工程師,公眾號里分享大量Linux干貨,歡迎關注!

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2020-10-05 22:01:02

Linux系統編程線程屬性

2020-09-26 21:43:59

Linux系統編程條件變量

2020-10-10 07:18:14

Linux系統編程管道

2020-10-18 07:13:44

Linux系統編程信號捕捉

2020-09-25 07:34:40

Linux系統編程信號量

2020-10-05 22:05:10

Linux系統編程時序競態

2020-09-22 07:35:06

Linux線程進程

2020-09-28 06:49:50

Linux系統編程互斥量mutex

2020-10-09 07:13:11

Linux系統編程mmap

2020-10-08 10:10:51

Linux系統編程信號集

2017-02-28 18:26:09

Linuxinput子系統編程

2022-02-14 15:07:48

進程FileChanne線程

2010-03-05 13:34:54

2019-03-15 09:30:09

Linux系統CPU

2009-07-03 11:57:18

系統編程安全linux

2009-10-23 16:35:44

linux Debia

2010-02-02 13:26:53

Linux內核

2025-04-16 04:22:00

2024-01-29 01:08:01

悲觀鎖遞歸鎖讀寫鎖

2024-05-15 09:41:22

樂觀鎖編程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲成人av一区二区 | 久久国产一区二区 | 亚洲精品一区二区三区蜜桃久 | 久久久久国产精品免费免费搜索 | 久久久国产精品一区 | 国产免费一区二区 | 国产91在线 | 欧美 | av一级久久 | 中文字幕亚洲视频 | 久久精品欧美一区二区三区不卡 | 中文字幕在线一区二区三区 | 亚洲国产精品一区在线观看 | 日韩一区二区三区在线观看 | 久草视频观看 | 日韩国产中文字幕 | 精品欧美乱码久久久久久1区2区 | 日韩中文字幕一区二区 | 免费黄网站在线观看 | 成人免费一区二区三区视频网站 | 久久亚洲国产精品 | 国产大学生情侣呻吟视频 | 日本大香伊一区二区三区 | 精品久久电影 | 国产精品激情在线 | 三级黄色片在线观看 | 亚洲视频不卡 | jdav视频在线观看免费 | 亚洲免费网址 | 久草a√| 99国产精品视频免费观看一公开 | 国产精品国产三级国产aⅴ原创 | 天天干视频 | 日本不卡高字幕在线2019 | 国产二区三区 | 日韩福利 | 黄色片亚洲 | 精品一区二区三区免费视频 | 99影视| 国产福利在线播放麻豆 | 久久人体 | 国产精品久久久久久久久久久久久 |