偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Linux系統(tǒng)編程—讀寫鎖rwlock

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

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

讀寫鎖的特性為:寫?yīng)氄?,讀共享;寫鎖優(yōu)先級(jí)高。對(duì)于讀寫鎖,掌握了這12個(gè)字就足矣了。

[[344013]]

Linux環(huán)境下,讀寫鎖具有以下三種狀態(tài):

  • 讀模式下加鎖狀態(tài) (讀鎖)
  • 寫模式下加鎖狀態(tài) (寫鎖)
  • 不加鎖狀態(tài)

雖然讀寫鎖有讀鎖、寫鎖、不加鎖三種狀態(tài),但其實(shí)它只有一把鎖,而非三把。

前文提到,讀寫鎖的特性為:寫?yīng)氄?,讀共享;寫鎖優(yōu)先級(jí)高。具體來(lái)講:

  • 讀寫鎖是“寫模式加鎖”時(shí), 解鎖前,所有嘗試對(duì)該鎖進(jìn)行加鎖(不管是讀鎖還是寫鎖)的線程都會(huì)被阻塞;--> 寫?yīng)氄?/li>
  • 讀寫鎖是“讀模式加鎖”時(shí), 如果線程以讀模式對(duì)其加鎖會(huì)成功;如果線程以寫模式加鎖會(huì)阻塞。--> 讀共享
  • 讀寫鎖是“讀模式加鎖”時(shí), 既有試圖以寫模式加鎖的線程,也有試圖以讀模式加鎖的線程。那么讀寫鎖會(huì)阻塞隨后的讀模式鎖請(qǐng)求,優(yōu)先滿足寫模式鎖。--> 寫鎖優(yōu)先級(jí)高

讀寫鎖也叫共享-獨(dú)占鎖。當(dāng)讀寫鎖以讀模式鎖住時(shí),它是以共享模式鎖住的;當(dāng)它以寫模式鎖住時(shí),它是以獨(dú)占模式鎖住的。寫?yīng)氄?、讀共享。

讀寫鎖非常適合于對(duì)數(shù)據(jù)結(jié)構(gòu)讀的次數(shù)遠(yuǎn)大于寫的情況。因?yàn)樽x鎖是共享的,這樣可以提高并行性。

主要應(yīng)用函數(shù):

  • pthread_rwlock_init函數(shù)
  • pthread_rwlock_destroy函數(shù)
  • pthread_rwlock_rdlock函數(shù)
  • pthread_rwlock_wrlock函數(shù)
  • pthread_rwlock_tryrdlock函數(shù)
  • pthread_rwlock_trywrlock函數(shù)
  • pthread_rwlock_unlock函數(shù)

以上7 個(gè)函數(shù)的返回值都是:成功返回0,失敗直接返回錯(cuò)誤號(hào)。

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

##pthread_rwlock_init函數(shù)

函數(shù)原型:

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

函數(shù)作用:初始化一把讀寫鎖

參數(shù)說(shuō)明:

  • rwlock:傳出參數(shù),調(diào)用時(shí)應(yīng)傳&rwlock給該函數(shù);
  • attr:表示讀寫鎖屬性,通常傳NULL,表示使用默認(rèn)屬性;

##pthread_rwlock_destroy函數(shù)

函數(shù)原型:

  1. int pthread_rwlock_destroy(pthread_rwlock_t *rwlock); 

函數(shù)作用:銷毀一把讀寫鎖

##pthread_rwlock_rdlock函數(shù)

函數(shù)原型:

  1. int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock); 

函數(shù)作用:以讀方式請(qǐng)求讀寫鎖。(常簡(jiǎn)稱為:請(qǐng)求讀鎖)

##pthread_rwlock_wrlock函數(shù)

函數(shù)原型:

  1. int pthread_rwlock_wrlock(pthread_rwlock_t *rwlock); 

函數(shù)作用:以寫方式請(qǐng)求讀寫鎖。(常簡(jiǎn)稱為:請(qǐng)求寫鎖)

##pthread_rwlock_unlock函數(shù)

函數(shù)原型:

  1. int pthread_rwlock_unlock(pthread_rwlock_t *rwlock); 

函數(shù)作用:解鎖。

##pthread_rwlock_tryrdlock函數(shù)

函數(shù)原型:

  1. int pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock); 

函數(shù)作用:非阻塞以讀方式請(qǐng)求讀寫鎖(非阻塞請(qǐng)求讀鎖)

##pthread_rwlock_trywrlock函數(shù)

函數(shù)原型:

  1. int pthread_rwlock_trywrlock(pthread_rwlock_t *rwlock); 

函數(shù)作用:非阻塞以寫方式請(qǐng)求讀寫鎖(非阻塞請(qǐng)求寫鎖)

本文授權(quán)轉(zhuǎn)載自公眾號(hào)「良許Linux」。良許,世界500強(qiáng)外企Linux開發(fā)工程師,公眾號(hào)里分享大量Linux干貨,歡迎關(guān)注!

 

責(zé)任編輯:趙寧寧 來(lái)源: 今日頭條
相關(guān)推薦

2020-10-05 22:01:02

Linux系統(tǒng)編程線程屬性

2020-09-26 21:43:59

Linux系統(tǒng)編程條件變量

2020-10-10 07:18:14

Linux系統(tǒng)編程管道

2020-10-18 07:13:44

Linux系統(tǒng)編程信號(hào)捕捉

2020-09-25 07:34:40

Linux系統(tǒng)編程信號(hào)量

2020-10-05 22:05:10

Linux系統(tǒng)編程時(shí)序競(jìng)態(tài)

2020-09-22 07:35:06

Linux線程進(jìn)程

2020-09-28 06:49:50

Linux系統(tǒng)編程互斥量mutex

2020-10-09 07:13:11

Linux系統(tǒng)編程mmap

2020-10-08 10:10:51

Linux系統(tǒng)編程信號(hào)集

2017-02-28 18:26:09

Linuxinput子系統(tǒng)編程

2022-02-14 15:07:48

進(jìn)程FileChanne線程

2010-03-05 13:34:54

2019-03-15 09:30:09

Linux系統(tǒng)CPU

2009-07-03 11:57:18

系統(tǒng)編程安全linux

2009-10-23 16:35:44

linux Debia

2010-02-02 13:26:53

Linux內(nèi)核

2025-04-16 04:22:00

2024-01-29 01:08:01

悲觀鎖遞歸鎖讀寫鎖

2024-05-15 09:41:22

樂(lè)觀鎖編程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)