Linux多執行緒程式設計之讀寫鎖

2021-09-13 14:44:07 字數 1170 閱讀 1592

讀寫鎖也是執行緒同步中的一種同步機制,簡單的來說:讀寫鎖既有讀的方面也有寫的方面,其中讀是共享鎖,而寫是獨佔鎖,而且系統中讀寫鎖的分配是寫鎖優先的。

下面的用例,證明了讀鎖是共享鎖。

thread_fun1中加了讀鎖,但並沒有解讀鎖;thread_fun2中也可以加讀鎖執行

如果thread_fun2中加的是寫鎖,則不能執行。因為有執行緒加了讀鎖卻並沒有解鎖,所以寫鎖難以分配,執行緒難以執行。

如果thread_fun1中加的也是寫鎖,那麼只要thread_fun1沒有執行完,thread_fun2的寫鎖難以分配。所以只有thread_fun1執行完了之後,thread_fun2才可以執行。

下面的用例證明了系統的讀寫鎖分配是寫鎖分配優先的:

我們先給乙個執行緒(thread_fun()函式)分配寫鎖,用迴圈建立的其他執行緒都將被阻塞。呼叫sleep()函式延時,使得迴圈建立的五個程序都處於啟動狀態,然後解寫鎖。五個程序中有的要分配寫鎖,有的要分配讀鎖。多次執行程式,從執行的結果可以看出系統是優先分配寫鎖的。

據說用互斥量和條件量,可以實現讀寫鎖。ennnnnnnn後續要完成的任務。

多執行緒程式設計之讀寫鎖

讀寫問題是乙個經典的同步問題,主要針對保護很少更新的資料結構這種同步情況。假設有乙個用於儲存dns條目快取的表,它用來將網域名稱解析為相應的ip位址。通常,乙個給定的dns條目將在很長一段時間裡保持不變 在許多情況下,dns條目會保持數年不變。雖然隨著使用者訪問不同的 新的條目可能會被不時地新增到表...

多執行緒程式設計之讀寫鎖

多執行緒程式設計之讀寫鎖 pthread是 posix threads 的簡稱,是posix的執行緒標準。pthread讀寫鎖把對共享資源的訪問者分為讀者和寫者,讀者只對共享資源進行讀訪問,寫者只對共享資源進行寫操作。在互斥機制,讀者和寫者都需要獨立獨佔互斥量以獨佔共享資源,在讀寫鎖機制下,允許同時...

多執行緒之讀寫鎖

之前沒真正使用讀寫鎖,看到別人對讀寫鎖的解釋總感覺一頭霧水。今天親自敲 實驗之後,才明了,原來如此。網上沒有一篇文章是能描述出自己理解的樣子,所以將自己的思路記下來。先提出疑問,邊自答邊找思路,有了思路,再回頭去執行一下 就清晰明了了。如果你急著想要一句話概括讀寫鎖,那我會告訴你 讀鎖是加在讀方法裡...