亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mutex.cpp

?? firtext搜索引擎源碼
?? CPP
字號:
//// Copyright(C) 2005--2006 Institute of Computing Tech, Chinese Academy of Sciences. // All rights reserved.// This file is part of FirteX (www.firtex.org)//// Use of the FirteX is subject to the terms of the software license set forth in // the LICENSE file included with this software, and also available at// http://www.firtex.org/license.html
//// Author	: 郭瑞杰(GuoRuijie)// Email	: ruijieguo@software.ict.ac.cn,ruijieguo@gmail.com// Created	: 2007/6/2//

#include "thread/win32/Mutex.h"

#define READER_RECURRENCE_UNIT 0x00000001
#define READER_RECURRENCE_MASK 0x0000FFFF
#define WRITER_RECURRENCE_UNIT 0x00010000

namespace firtex
{
	namespace thread
	{
		CReadWriteMutex::CReadWriteMutex()
			: m_hSafeToWriteEvent(INVALID_HANDLE_VALUE)
			, m_hSafeToReadEvent(INVALID_HANDLE_VALUE)
			, m_nNumOfWriter(0)
			, m_nNumOfReaderEntered(0)
			, m_nNumOfReaderWaiting(0)
			, m_rLock(*this)
			, m_wLock(*this)
		{			
#if (_WIN32_WINNT >= 0x0403)
			InitializeCriticalSectionAndSpinCount(&m_cs, READER_WRITER_SPIN_COUNT);
#else
			InitializeCriticalSection(&m_cs);
#endif
		}
		CReadWriteMutex::~CReadWriteMutex()
		{
			if(m_hSafeToReadEvent != INVALID_HANDLE_VALUE)
			{
				CloseHandle(m_hSafeToReadEvent);
				m_hSafeToReadEvent = INVALID_HANDLE_VALUE;
			}
			if(m_hSafeToWriteEvent)
			{
				CloseHandle(m_hSafeToWriteEvent);
				m_hSafeToWriteEvent = INVALID_HANDLE_VALUE;
			}			
			DeleteCriticalSection(&m_cs);
		}

		void CReadWriteMutex::acquireWriterLock()
		{
			const DWORD dwCurrentThreadId = GetCurrentThreadId();
			EnterCriticalSection(&m_cs);

			const DWORD dwThreadState = (m_map[dwCurrentThreadId] += WRITER_RECURRENCE_UNIT);
			if(WRITER_RECURRENCE_UNIT == dwThreadState)
			{
				acquireWriterLock_i( (m_nNumOfWriter + m_nNumOfReaderEntered) != 0);
			}
			else if ( (WRITER_RECURRENCE_UNIT*2) <= dwThreadState)
			{
				// This thread was already a writer
				LeaveCriticalSection(&m_cs);
			}
			else
			{
				// Upgrading from reader to writer
				acquireWriterLock_i((--m_nNumOfReaderEntered) != 0);
			}
		}
		void CReadWriteMutex::releaseWriterLock()
		{
			const DWORD dwCurrentThreadId = GetCurrentThreadId();
			EnterCriticalSection(&m_cs);

			CMapThreadToState::iterator ite = m_map.find(dwCurrentThreadId);
			FIRTEX_ASSERT2( (ite != m_map.end()) && (WRITER_RECURRENCE_UNIT <= ite->second));

			const DWORD dwThreadState = (ite->second -= WRITER_RECURRENCE_UNIT);
			if(0 == dwThreadState)
			{
				m_map.erase(ite);
				releaseWriterLock_i(false);
			}
			else if (WRITER_RECURRENCE_UNIT <= dwThreadState)
			{
				// Still be is a writer
				LeaveCriticalSection(&m_cs);
			}
			else
			{
				// Down-grading from writer to reader
				releaseWriterLock_i(true);
			}
		}
		void CReadWriteMutex::acquireReaderLock()
		{		
			const DWORD dwCurrentThreadId = GetCurrentThreadId();
			EnterCriticalSection(&m_cs);

			CMapThreadToState::iterator ite = m_map.find(dwCurrentThreadId);
			if(ite == m_map.end())
				m_map.insert(make_pair(dwCurrentThreadId,0));
			const DWORD dwThreadState = (m_map[dwCurrentThreadId] += READER_RECURRENCE_UNIT);
			if(READER_RECURRENCE_UNIT == dwThreadState)
			{
				acquireReaderLock_i();
			}
			else
			{
				LeaveCriticalSection(&m_cs);
			}
		}
		void CReadWriteMutex::releaseReaderLock()
		{
			const DWORD dwCurrentThreadId = GetCurrentThreadId();
			EnterCriticalSection(&m_cs);

			CMapThreadToState::iterator ite = m_map.find(dwCurrentThreadId);
			FIRTEX_ASSERT2( (ite != m_map.end()) && (READER_RECURRENCE_MASK & ite->second));

			const DWORD dwThreadState = (ite->second -= READER_RECURRENCE_UNIT);
			if(0 == dwThreadState)
			{
				m_map.erase(ite);
				releaseReaderLock_i();
			}
			else
			{
				LeaveCriticalSection(&m_cs);
			}
		}	

		CLockable& CReadWriteMutex::getReadLock()		{			return m_rLock;		}				CLockable& CReadWriteMutex::getWriteLock()
		{
			return m_wLock;
		}

		//////////////////////////////////////////////////////////////////////////
		//CReadWriteMutex::RLock
		void CReadWriteMutex::RLock::acquire()
		{
			m_rwLock.acquireReaderLock();
		}

		bool CReadWriteMutex::RLock::tryAcquire(unsigned long timeout)
		{
			return false;
		}

		void CReadWriteMutex::RLock::release()
		{
			m_rwLock.releaseReaderLock();
		}

		//////////////////////////////////////////////////////////////////////////
		//CReadWriteMutex::WLock
		void CReadWriteMutex::WLock::acquire()
		{
			m_rwLock.acquireWriterLock();
		}

		bool CReadWriteMutex::WLock::tryAcquire(unsigned long timeout)
		{
			return false;
		}

		void CReadWriteMutex::WLock::release()
		{
			m_rwLock.releaseWriterLock();
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久福利| 欧美极品xxx| 成人免费看的视频| 日本人妖一区二区| 中文字幕日本乱码精品影院| 欧美精品在线视频| 成人av免费网站| 紧缚奴在线一区二区三区| 亚洲午夜私人影院| 亚洲免费av观看| 欧美激情一区二区三区全黄| 日韩久久久久久| 制服丝袜亚洲精品中文字幕| 色女孩综合影院| 本田岬高潮一区二区三区| 全国精品久久少妇| 欧美一区二区三区播放老司机| 不卡高清视频专区| 亚洲国产人成综合网站| 日韩理论在线观看| 亚洲图片激情小说| 久久精品欧美日韩| 日韩欧美高清在线| 精品日韩在线观看| 久久综合九色欧美综合狠狠| 日韩午夜中文字幕| 3d动漫精品啪啪| 国产精品888| 激情图片小说一区| 精品国产凹凸成av人导航| 成年人午夜久久久| 成人激情电影免费在线观看| 国产不卡在线播放| 亚洲电影一级片| 日韩欧美第一区| 欧美一区二区三区影视| 欧美伊人久久大香线蕉综合69| 欧美午夜不卡在线观看免费| 欧美色区777第一页| 欧美日本在线一区| 欧洲视频一区二区| 欧美日韩精品是欧美日韩精品| 在线精品亚洲一区二区不卡| 欧美日韩在线电影| 日韩视频免费直播| 99久久99久久久精品齐齐| av在线不卡免费看| 欧洲av一区二区嗯嗯嗯啊| 欧洲一区在线观看| 91精品国产入口| 884aa四虎影成人精品一区| 欧美va天堂va视频va在线| 久久亚洲春色中文字幕久久久| 久久久久88色偷偷免费| 中文字幕一区二区三区av| 亚洲线精品一区二区三区| 免费在线成人网| 粉嫩一区二区三区性色av| 91高清在线观看| 欧美色精品天天在线观看视频| 91麻豆精品91久久久久同性| 久久网站最新地址| 亚洲在线免费播放| 国产一区二区三区av电影| heyzo一本久久综合| 91高清在线观看| 久久亚洲二区三区| 精品国产亚洲一区二区三区在线观看| 国产日韩v精品一区二区| 亚洲高清中文字幕| 亚洲欧美综合另类在线卡通| 亚洲高清在线视频| 成人免费视频网站在线观看| 91精品国模一区二区三区| 久久九九影视网| 亚洲视频综合在线| 精品一区二区三区免费视频| 色一区在线观看| 欧美tickling挠脚心丨vk| 久久精品人人做人人综合| 亚洲一区二区三区自拍| 国产一本一道久久香蕉| 色婷婷国产精品| 久久这里只有精品视频网| 亚洲成人你懂的| 91亚洲国产成人精品一区二三| 欧美一区二区免费| 亚洲第一在线综合网站| av在线播放成人| 久久精品视频在线免费观看| 日本视频一区二区三区| 91黄色免费观看| 555www色欧美视频| 亚洲国产精品嫩草影院| 91网页版在线| 国产精品五月天| 国产成人午夜视频| 久久先锋影音av| 激情深爱一区二区| 精品理论电影在线观看| 亚洲精品五月天| 99re视频精品| 亚洲日本韩国一区| 91偷拍与自偷拍精品| 精品国产乱码久久久久久夜甘婷婷| 日韩美一区二区三区| 另类欧美日韩国产在线| 91精品国产麻豆国产自产在线 | 99国产精品久久久久| 久久久国产精品午夜一区ai换脸| 蜜臀国产一区二区三区在线播放 | 精品系列免费在线观看| 欧美老肥妇做.爰bbww视频| 又紧又大又爽精品一区二区| 99久久精品国产精品久久| 欧美日韩亚洲综合一区二区三区| 一区二区三区日韩精品| 欧美在线短视频| 日本在线不卡视频| 91猫先生在线| 一区二区三区在线看| 欧美日韩亚洲综合在线| 日本中文一区二区三区| 久久伊人中文字幕| 高清av一区二区| 精品国产sm最大网站| 91超碰这里只有精品国产| 成人黄色网址在线观看| 久久激情五月婷婷| 偷拍亚洲欧洲综合| 亚洲精品国产成人久久av盗摄| 久久免费国产精品| 欧美成人官网二区| 这里只有精品免费| 欧美性色综合网| 色狠狠色狠狠综合| 白白色 亚洲乱淫| 国产99久久久国产精品免费看 | 欧美激情一二三区| 欧美大片一区二区| 欧美一区二区三区婷婷月色| 在线观看亚洲a| 91啪在线观看| 99视频一区二区三区| 国产高清不卡一区二区| 狠狠色伊人亚洲综合成人| 日本伊人色综合网| 美女任你摸久久| 日韩高清不卡在线| 婷婷中文字幕一区三区| 亚洲va欧美va人人爽| 亚洲高清不卡在线| 五月天精品一区二区三区| 午夜精品一区二区三区电影天堂 | 成人精品免费看| 成人aaaa免费全部观看| www.亚洲在线| 91碰在线视频| 欧美三级一区二区| 欧美乱熟臀69xxxxxx| 91.xcao| 91黄色小视频| 欧美理论电影在线| 欧美xxx久久| 国产精品精品国产色婷婷| 亚洲男人天堂一区| 亚洲成人动漫精品| 六月丁香综合在线视频| 国产激情视频一区二区三区欧美| 国产成人免费av在线| 色噜噜狠狠一区二区三区果冻| 欧美伊人精品成人久久综合97| 欧美电影在哪看比较好| 日韩欧美区一区二| 国产精品久久久久影院色老大| 亚洲三级在线观看| 婷婷一区二区三区| 丁香五精品蜜臀久久久久99网站| 色综合一区二区| 欧美一区二区大片| 国产精品二三区| 热久久久久久久| 91一区二区在线| 91精品国产一区二区三区| 久久久久国产精品厨房| 一级特黄大欧美久久久| 久久91精品国产91久久小草| 91在线视频官网| 日韩欧美自拍偷拍| 日韩理论片一区二区| 美美哒免费高清在线观看视频一区二区| 国产一区二区伦理片| 欧美综合一区二区| 久久久久久黄色| 无吗不卡中文字幕| 色哟哟在线观看一区二区三区| 日韩精品中文字幕一区二区三区| 亚洲人成精品久久久久| 国产综合色产在线精品| 911国产精品|