Linux讀寫鎖使用

2021-09-02 08:02:23 字數 475 閱讀 9241

讀寫鎖很早就知道了,但是使用的不多,這次**中出現了,才認真思考怎麼用。摘錄一下:

讀寫鎖的特點是:

當讀寫鎖是寫加鎖時,在這個鎖被解鎖之前,所有試圖對這個鎖加鎖的執行緒都會被阻塞。

當讀寫鎖是讀加鎖時,在這個鎖被解鎖之前,所有試圖以讀模式對他進行加鎖的執行緒都可以得到訪問權,但是如果執行緒以寫模式對此鎖加鎖時會造成阻塞,直到所有執行緒釋放讀鎖

這裡有乙個問題,如果乙個執行緒現 a 獲得一把讀鎖,現在來了乙個執行緒b請求寫鎖,那麼它就要等到執行緒a釋放讀鎖,但是如果在a釋放之前又乙個執行緒獲得了讀鎖(讀鎖可以多次獲得),

並且在改執行緒釋放讀鎖之前又乙個執行緒請求到了讀鎖,假設後續一直有讀鎖請求成功,那麼請求寫鎖的程序b就不得不一直阻塞等待所有讀鎖的釋放。所以相關的實現一般讓當乙個讀寫鎖處於讀模式鎖住時,此時來了另乙個執行緒的寫模式加鎖請求,那麼讀[size=large]寫鎖通常會阻塞隨後的讀模式鎖請求[/size],這樣可以避免鎖被讀模式長期占用,而寫模式請求一直得不到滿足

Linux讀寫鎖的使用

目錄 1.讀寫鎖介紹 2.讀寫鎖的操作函式 3.讀寫鎖示例 讀寫鎖的型別可以分為讀鎖和寫鎖,以讀方式給資料加鎖 讀鎖。以寫方式給資料加鎖 寫鎖。但是讀寫鎖是一把鎖,每個執行緒只可以帶乙個鎖型別。特性 舉例說明 1.執行緒a加讀鎖成功,又來了三個執行緒,做讀操作,三個執行緒再次加鎖成功。結論 讀時共享...

linux程序讀寫鎖

讀寫鎖比mutex有更高的適用性,可以多個執行緒同時占用讀模式的讀寫鎖,但是只能乙個執行緒占用寫模式的讀寫鎖。1.當讀寫鎖是寫加鎖狀態時,在這個鎖被解鎖之前,所有試圖對這個鎖加鎖的執行緒都會被阻塞 2.當讀寫鎖在讀加鎖狀態時,所有試圖以讀模式對它進行加鎖的執行緒都可以得到訪問權,但是以寫模式對它進行...

linux讀寫鎖應用

思路 linux多執行緒時,資料空間為公共,乙個執行緒去新增資料,乙個執行緒去修改資料,這個時候需要加入互斥鎖,倆個執行緒如果同時去處理這個資料空間,資料會出錯,除了執行緒鎖之外,學習了乙個讀寫鎖 詳細函式說明 核心函式 初始化讀寫鎖 pthread rwlock init 寫入讀寫鎖中的鎖 pth...