linux 讀寫鎖的幾種實現方式

2021-08-01 21:14:52 字數 906 閱讀 3130

一、使用互斥鎖和條件變數實現讀寫鎖:

[cpp]view plain

copy

class readwrite_lock  

void readlock()  

void readunlock()  

void writelock()  

void writeunlock()  

private:  

mutex mtx;  

condition_variable cond;  

int stat; // == 0 無鎖;> 0 已加讀鎖個數;< 0 已加寫鎖

};  

二、使用2個互斥鎖實現讀寫鎖:

[cpp]view plain

copy

class readwrite_lock  

void readlock()  

void readunlock()  

void writelock()  

void writeunlock()  

private:  

mutex read_mtx;  

mutex write_mtx;  

int read_cnt; // 已加讀鎖個數

};  

用mutex和conditon實現寫優先的讀寫鎖

[cpp]view plain

copy

class rwlock   

void readlock()   

void readunlock()   

void writelock()   

void writerunlock()   

}; 

幾種檔案的讀寫方式

1.檔案寫入 string filename path.combine logpath,log.txt directory.createdirectory logpath 建立了資料夾之後,才能建立裡面的檔案 using filestream filestream file.create filen...

讀寫鎖的實現!

寫程式過程中總免不了用到鎖,雖然大牛們總是推薦無鎖程式設計,但那境界對我來說實在太遠了。專案中的資料資源的訪問,少不了鎖,考慮到都是讀的多,寫的少,於是參考網路,自己實現乙個寫優先的讀寫鎖。windows下的 class rwlock include rwlock.h rwlock rwlock r...

讀寫鎖的實現

首先介紹下pthread cond t。在linux下稱之為狀態變數,與之相關的有下面幾個api int pthread cond init pthread cond t cond,pthread condattr t cond attr int pthread cond signal pthrea...