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

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

?? gspinlock.cpp

?? 一個非常有用的開源代碼
?? CPP
字號:
/*	Copyright (C) 2006, Mike Gashler	This library is free software; you can redistribute it and/or	modify it under the terms of the GNU Lesser General Public	License as published by the Free Software Foundation; either	version 2.1 of the License, or (at your option) any later version.	see http://www.gnu.org/copyleft/lesser.html*/#include "GSpinLock.h"#include <time.h>#include "GMacros.h"#include "GThread.h"GSpinLock::GSpinLock(){	m_dwLocked = 0;#ifndef WIN32	pthread_mutex_init(&m_mutex, NULL);#endif#ifdef _DEBUG	m_szUniqueStaticStringToIdentifyWhoLockedIt = "<Never Been Locked>";#endif}GSpinLock::~GSpinLock(){#ifndef WIN32	pthread_mutex_destroy(&m_mutex);#endif}#ifdef WIN32static inline unsigned int testAndSet(unsigned int* pDWord){	unsigned int dwRetVal;	__asm	{		mov edx, pDWord		mov eax, 1		lock xchg eax, [edx] // This is the line that does the job			mov dwRetVal, eax	}	return dwRetVal;}#endif // WIN32void GSpinLock::Lock(const char* szUniqueStaticStringToIdentifyWhoLockedIt){#ifdef _DEBUG	time_t t;	time_t tStartTime = time(&t);	time_t tCurrentTime;#endif // _DEBUG#ifdef WIN32	while(testAndSet(&m_dwLocked))#else	while(0!=pthread_mutex_trylock(&m_mutex))#endif	{#ifdef _DEBUG		tCurrentTime = time(&t);		GAssert(tCurrentTime - tStartTime < 10, "Blocked for 10 seconds!");#endif // _DEBUG		GThread::sleep(0);	}#ifndef WIN32	m_dwLocked = 1;#endif#ifdef _DEBUG	m_szUniqueStaticStringToIdentifyWhoLockedIt = szUniqueStaticStringToIdentifyWhoLockedIt;#endif // _DEBUG}void GSpinLock::Unlock(){#ifdef _DEBUG	m_szUniqueStaticStringToIdentifyWhoLockedIt = "<Not Locked>";#endif // _DEBUG	m_dwLocked = 0;#ifndef WIN32	pthread_mutex_unlock(&m_mutex);#endif}#ifndef NO_TEST_CODE#define THREAD_COUNT 3 // 100#define THREAD_ITTERATIONS 500 // 2000struct TestSpinLockThreadStruct{	int* pBalance;	bool* pExitFlag;	GSpinLock* pSpinLock;	int nOne;};// This thread increments the balance a bunch of times.  We use a dilly-dally loop// instead of just calling Sleep because we want our results to reflect// random context-switches that can happen at any point whereas Sleep causes the// context switch to happen immediately which may result it one never happening// at any other point.unsigned int TestSpinLockThread(void* pParameter){	struct TestSpinLockThreadStruct* pThreadStruct = (struct TestSpinLockThreadStruct*)pParameter;	int n, i;	for(n = 0; n < THREAD_ITTERATIONS; n++)	{		// Take the lock		pThreadStruct->pSpinLock->Lock("TestSpinLockThread");		// read the balance		int nBalance = *pThreadStruct->pBalance;		// We increment nBalance in this funny way so that a smart optimizer won't		// figure out that it can remove the nBalance variable from this logic.		nBalance += pThreadStruct->nOne;		// Dilly-dally		for(i = 0; i < 10; i++)			nBalance++;		for(i = 0; i < 10; i++)			nBalance--;		// update the balance		*pThreadStruct->pBalance = nBalance;		// Release the lock		pThreadStruct->pSpinLock->Unlock();	}	// Clean up and exit	GAssert(*pThreadStruct->pExitFlag == false, "expected this to be false");	*pThreadStruct->pExitFlag = true;	delete(pThreadStruct);	return 1;}/*static*/ void GSpinLock::Test(){	bool exitFlags[THREAD_COUNT];	int n;	for(n = 0; n < THREAD_COUNT; n++)		exitFlags[n] = false;	int nBalance = 0;	GSpinLock sl;	// spawn a bunch of threads	for(n = 0; n < THREAD_COUNT; n++)	{		TestSpinLockThreadStruct* pThreadStruct = new struct TestSpinLockThreadStruct;		pThreadStruct->pBalance = &nBalance;		pThreadStruct->pExitFlag = &exitFlags[n];		pThreadStruct->pSpinLock = &sl;		pThreadStruct->nOne = 1;		HANDLE hThread = GThread::SpawnThread(TestSpinLockThread, pThreadStruct);		if(hThread == BAD_HANDLE)			throw "failed";	}	// wait until all the threads are done	while(true)	{		bool bDone = true;		for(n = 0; n < THREAD_COUNT; n++)		{			if(!exitFlags[n])			{				bDone = false;				GThread::sleep(0);				break;			}		}		if(bDone)			break;	}	// Check the final balance	if(nBalance != THREAD_COUNT * THREAD_ITTERATIONS)		throw "failed";}#endif // !NO_TEST_CODE

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久女同性恋中文字幕| 在线观看亚洲精品| 成人爽a毛片一区二区免费| 国产成人免费视频精品含羞草妖精| 九九九精品视频| 国产乱淫av一区二区三区| 国产69精品久久久久毛片| 国产成人综合在线观看| 亚洲另类春色校园小说| 亚洲一区二区三区四区五区黄| 一区二区三区欧美| 天天影视涩香欲综合网| 免费观看成人鲁鲁鲁鲁鲁视频| 久久er精品视频| 国产成人精品免费一区二区| 99国产精品国产精品毛片| 日本道精品一区二区三区| 日韩欧美另类在线| 国产亚洲婷婷免费| 亚洲综合一二三区| 国产乱理伦片在线观看夜一区| 国产福利电影一区二区三区| 一本色道久久综合精品竹菊| 欧美日韩综合一区| 亚洲国产成人午夜在线一区| 一区二区三区电影在线播| 久久精品国产久精国产| 97久久超碰国产精品| 91麻豆精品国产无毒不卡在线观看| 久久精品亚洲精品国产欧美| 亚洲在线视频网站| 91在线观看成人| 久久久久久麻豆| 免费精品视频最新在线| 白白色 亚洲乱淫| 久久久国际精品| 国产成人在线观看免费网站| 91精品在线观看入口| 亚洲特黄一级片| 成年人网站91| 91麻豆精品国产91久久久久 | 欧美www视频| 青椒成人免费视频| 日韩欧美一二三区| 日本aⅴ精品一区二区三区| 欧美色综合影院| 夜夜操天天操亚洲| 在线一区二区视频| 午夜av区久久| 欧美精品一区二区三区蜜桃视频 | 免费成人在线影院| 日韩限制级电影在线观看| 青娱乐精品视频| 欧美日本一区二区三区| 洋洋成人永久网站入口| 99视频精品全部免费在线| 中文字幕av不卡| 成人性生交大合| 国产精品理伦片| 国产乱码精品一区二区三区av| 久久久亚洲高清| 国产·精品毛片| 一区二区三区蜜桃| 欧美日韩激情在线| 国产精品99久久久久久似苏梦涵| 久久久久久久久99精品| 成人avav影音| 亚洲一区二区成人在线观看| 4438成人网| k8久久久一区二区三区| 亚洲欧美日韩久久精品| 911精品产国品一二三产区 | 精品视频免费在线| 成人毛片老司机大片| 久久国产婷婷国产香蕉| 亚洲欧美一区二区三区极速播放 | 国产精品伦一区| 26uuu另类欧美亚洲曰本| 91国偷自产一区二区三区成为亚洲经典| 日韩av在线发布| 亚洲国产欧美在线人成| 久久在线免费观看| 欧美va亚洲va| 精品国产一区二区三区不卡| 在线观看网站黄不卡| 成人午夜精品在线| 日本成人在线不卡视频| 日韩av一级片| 亚洲成在人线在线播放| 精品粉嫩aⅴ一区二区三区四区 | 欧美激情在线观看视频免费| 制服丝袜国产精品| 欧美日韩一区二区欧美激情| 色视频一区二区| 在线欧美日韩精品| 日韩欧美一二三| 精品电影一区二区| 欧美激情中文不卡| 亚洲精品免费在线观看| 一级精品视频在线观看宜春院 | 欧美精品视频www在线观看 | 一个色在线综合| 婷婷久久综合九色综合绿巨人 | 粉嫩蜜臀av国产精品网站| 国产成人av影院| 欧美视频一区二区三区在线观看 | 一本久久综合亚洲鲁鲁五月天 | 国产日产亚洲精品系列| 亚洲乱码精品一二三四区日韩在线| 亚洲欧美一区二区在线观看| 亚洲另类在线一区| 天天做天天摸天天爽国产一区| 卡一卡二国产精品| 东方欧美亚洲色图在线| 欧美婷婷六月丁香综合色| 日韩一区二区视频在线观看| 亚洲欧洲国产日本综合| 天堂久久久久va久久久久| av成人动漫在线观看| 正在播放一区二区| 亚洲福利一区二区| 99久免费精品视频在线观看 | 国产精品国产三级国产aⅴ无密码| 欧美成人一区二区三区| 精品视频资源站| 亚洲精品菠萝久久久久久久| 国产在线视视频有精品| 欧美肥胖老妇做爰| 亚洲成av人片在www色猫咪| 成人午夜在线免费| 精品久久久网站| 国产原创一区二区| 欧美日韩国产精选| 亚洲成人免费看| 欧美色视频在线| 无码av免费一区二区三区试看 | 欧美午夜免费电影| 一区二区三区日韩| 99久久久久久| 一区二区三区.www| 欧美吞精做爰啪啪高潮| 亚洲综合成人在线视频| 色狠狠一区二区| 视频在线观看一区| 日韩一区二区三区视频在线观看| 亚欧色一区w666天堂| 在线观看91av| 国产a区久久久| 亚洲欧洲av在线| 欧美日韩的一区二区| 国产91在线看| 久久久久高清精品| 成人免费va视频| 亚洲午夜私人影院| 日韩欧美一区二区在线视频| 日本sm残虐另类| 国产精品国产三级国产aⅴ中文| fc2成人免费人成在线观看播放| 亚洲精品欧美专区| 精品国产1区二区| 欧美又粗又大又爽| 国产伦精一区二区三区| 一区二区在线观看不卡| 91精选在线观看| 色久综合一二码| 国产成人在线免费| 日韩av中文字幕一区二区| 一区在线观看免费| 2022国产精品视频| 国产69精品久久久久毛片| 日韩码欧中文字| 久久夜色精品一区| 在线免费不卡电影| 在线观看免费成人| 国产·精品毛片| 成人蜜臀av电影| 国产精品1区二区.| 国产精品911| 国产伦精品一区二区三区在线观看| 亚洲图片一区二区| 亚洲一区二区三区自拍| 亚洲国产裸拍裸体视频在线观看乱了| 国产日韩精品一区二区三区在线| 欧美一卡2卡三卡4卡5免费| av在线播放成人| 一区二区三区日本| 精品噜噜噜噜久久久久久久久试看| 欧美日韩五月天| 激情欧美一区二区三区在线观看| 日韩一区国产二区欧美三区| 5566中文字幕一区二区电影| 日韩午夜av一区| 亚洲精品一区二区三区在线观看 | 777久久久精品| 99在线精品一区二区三区| 99视频精品在线| 精品婷婷伊人一区三区三| 日韩精品一区二区三区中文不卡| 91精品国产高清一区二区三区| 日韩精品一区二区三区老鸭窝|