日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Linux读写锁释放,Linux读写锁的使用

發(fā)布時(shí)間:2025/3/20 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux读写锁释放,Linux读写锁的使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

讀寫(xiě)鎖是用來(lái)解決讀者寫(xiě)者問(wèn)題的,讀操作可以共享,寫(xiě)操作是排它的,讀可以有多個(gè)在讀,寫(xiě)只有唯一個(gè)在寫(xiě),寫(xiě)的時(shí)候不允許讀。

具有強(qiáng)讀者同步和強(qiáng)寫(xiě)者同步兩種形式:

強(qiáng)讀者同步:當(dāng)寫(xiě)者沒(méi)有進(jìn)行寫(xiě)操作時(shí),讀者就可以訪問(wèn);

強(qiáng)寫(xiě)者同步: 當(dāng)所有寫(xiě)者都寫(xiě)完之后,才能進(jìn)行讀操作,讀者需要最新的信息,一些實(shí)時(shí)性較高的系統(tǒng)會(huì)用到這種鎖。

讀寫(xiě)鎖的初始化:

pthread_rwlock_t m_rw_lock;

pthread_rwlock_init(pthread_rwlock_t*, pthread_rwattr_t*);

獲取讀寫(xiě)鎖的讀鎖操作:分為阻塞式獲取和非阻塞式獲取,如果讀寫(xiě)鎖由一個(gè)寫(xiě)者持有,則讀線程會(huì)阻塞直到寫(xiě)入者釋放讀寫(xiě)鎖。

阻塞式:pthread_rwlock_rdlock(pthread_rwlock_t);

非阻塞式:pthread_rwlock_tryrdlock(pthread_rwlock_t);

返回值:0,表示成功; 非0表示錯(cuò)誤碼;非阻塞會(huì)返回ebusy而不會(huì)讓線程等待。

獲取讀寫(xiě)鎖的寫(xiě)鎖操作:分為阻塞和非阻塞,如果對(duì)應(yīng)的讀寫(xiě)鎖被其它寫(xiě)者持有,或者讀寫(xiě)鎖被讀者持有,該線程都會(huì)阻塞等待。

阻塞式:pthread_rwlock_wrlock(pthread_rwlock_t*);

非阻塞式:pthread_rwlock_trywrlock(pthread_rwlock_t*);

釋放讀寫(xiě)鎖:

pthread_rwlock_unlock(pthread_rwlock_t*);

互斥鎖與讀寫(xiě)鎖的區(qū)別:

1、當(dāng)訪問(wèn)臨界區(qū)的資源時(shí)(訪問(wèn)的含義包括所有的操作),需要上互斥鎖;

2、當(dāng)對(duì)數(shù)據(jù)(互斥鎖中的臨界區(qū)資源)進(jìn)行讀取時(shí),需要上讀取鎖,當(dāng)對(duì)數(shù)據(jù)進(jìn)行寫(xiě)入時(shí),需要上寫(xiě)入鎖。

讀寫(xiě)鎖的優(yōu)點(diǎn):

對(duì)于讀數(shù)據(jù)較修改數(shù)據(jù)頻繁的應(yīng)用,用讀寫(xiě)鎖代替互斥鎖可以提高效率。因?yàn)槭褂没コ怄i時(shí),即使是讀出數(shù)據(jù)(相當(dāng)于操作臨界區(qū)資源)都需要上互斥鎖;而采用讀寫(xiě)鎖則允許在任一時(shí)刻多個(gè)讀出

者存在,提高了并發(fā)性。

總結(jié)

以上是生活随笔為你收集整理的Linux读写锁释放,Linux读写锁的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。