1. 程式人生 > >linux下用互斥鎖和條件變數來實現讀寫鎖

linux下用互斥鎖和條件變數來實現讀寫鎖

以下內容來源自UNP卷二的第八章

讀寫鎖的概念( the conception of read-write lock )

(1)只要沒有執行緒持有某個給定的讀寫鎖用於寫,那麼任意數目的執行緒可以持有該執行緒用於讀

(2)僅當沒有執行緒持有某個給定的讀寫鎖用於讀或用於寫,才能分配該讀寫鎖用於寫

這種給定資源的共享訪問方式也叫做共享-獨佔上鎖
因為獲取一個讀寫鎖用於讀是共享鎖,獲取一個讀寫鎖用於寫是獨佔鎖。

其實現可以通過專門的讀寫鎖函式來實現:

pthread_rwlock_rdlock用來獲取一個讀出鎖,如果對應的讀寫鎖已由某個寫入者持有,那就阻塞呼叫程序。
pthread_rwlock_rdlock(pthread_rwlock_t *rwptr);

pthread_rwock_wrlock獲取一個寫入鎖,如果對應的讀寫鎖已由另一個寫入者持有,或者已由一個或多個讀出者持有,那麼就阻塞呼叫執行緒。

pthread_rwlock_wrlock(pthread_rwlock_t *rwptr)

但是由於如果直接利用這兩的函式的話,顯然這個原理的實現就不夠透明瞭。若以我們想用互斥鎖和條件變數來實現讀寫鎖,進一步探究其內部原理

夜晚補。。。