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...