張氏讀寫鎖,c 訊號量實現

2021-07-09 02:08:44 字數 896 閱讀 2652

readwritelock.h

#pragma once

#includeclass readwritelock

;

readwritelock.cpp

#include "stdafx.h"

#include "readwritelock.h"

readwritelock::readwritelock(void)

: m_readcount(0), m_writecount(0)

readwritelock::~readwritelock(void)

/**張氏讀寫鎖 2015,[email protected] beijing normal university

*解決了多執行緒置換hashmap等操作中,需要執行緒同步控制的問題

*使用請保留作者資訊,以保證程式的正確性

*/void readwritelock::lockread(void)

else

}void readwritelock::unlockread(void)

void readwritelock::lockwrite(void)

else//放開寫讀判斷鎖

while(!m_lock_prewritecount.try_lock());//預寫程序減一

--m_prewritecount;

m_lock_prewritecount.unlock();

}void readwritelock::unlockwrite(void)

張氏讀寫鎖,多讀操作,單寫操作,寫操作優先的讀寫鎖。

[email protected] 北京師範大學

2015.12.19

訊號量實現讀寫鎖

一般的讀寫鎖 一般的讀寫鎖都是一開始對鎖分配max resource個資源,其中寫操作的時候會一次性占用 max resource個資源,而讀操作的時候就只會占用乙個資源。這樣子會出現乙個問題就是 如果在當前資源的數目不為max resource的時候,那麼總是不能進行寫操作,只能是進行 讀操作,如...

Linux Posix訊號量 讀寫鎖

posix訊號量 sem t sem init int sem init sem t sem,int pshared,unsigned int value 引數 pshared 0表 示執行緒間共享,非零表 示程序間共享 value 訊號量初始值 sem wait 條件不滿足,等待 sem post...

利用條件訊號量設計讀寫鎖

1 乙個資源同時可以有多個讀寫,但是只能有乙個寫鎖 2 用flag代表鎖的狀態,define un lock 0 define r lock 1 上一把讀鎖加乙個r lock define w lock 1 偽 1 lock r pthread lock resource.mutex while r...