一、使用互斥鎖和條件變數實現讀寫鎖:
[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...