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

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

?? threadbas.h

?? 研華ADAN4050 檢測程序(自做) 壓縮文件中 無密碼
?? H
字號:
#if !defined(CCL_THREADBAS_H_001064A8_932C_40ca_B559_7356BB029D6A_INCLUDED_)
#define CCL_THREADBAS_H_001064A8_932C_40ca_B559_7356BB029D6A_INCLUDED_


#include <windows.h>

/////////////////////////////////////////////////////////////////////////////
//                                                                         //
// -->-> class CThreadBase <-<--                                           //
//                                                                         //
//     Win32線程基類,在需要一個后臺Win32線程的場合,從CThreadBase派生一個 //
// 類,并在派生類中重載ThreadProc和MessageProc函數,即可利用該派生類控制和 //
// 使用一個后臺Win32線程。                                                 //
//     CThreadBase的直接派生類(即派生類沒有增加新的成員函數)對象可以被多 //
// 線程并發訪問。                                                          //
//                                                                         //
/////////////////////////////////////////////////////////////////////////////

class CThreadBase
{
protected:
	CThreadBase()
	{
		m_dwThreadID=0;
		m_hThread=NULL;
		m_bRuning=FALSE;
		m_hMutex=::CreateMutex(NULL,FALSE,NULL);
	}
	virtual ~CThreadBase()
	{
		ActiveThread(FALSE);
		if(m_hMutex!=NULL)
			::CloseHandle(m_hMutex);
	}
public:
	//激活/終止線程
	//<參數>
	//	bActive: 為TRUE表示激活線程,為FALSE表示終止線程
	//<返回值>
	//	如果成功返回TRUE,否則返回FALSE。
	BOOL ActiveThread(/*[in]*/BOOL bActive=TRUE)
	{
		//對象被其他線程長時間鎖定將導致調用失敗
		BOOL bRet=TRUE;
		if(bActive)
		{
			LockAccess();
			//如果m_bRuning==TRUE表示線程已經被激活
			if(m_bRuning==FALSE)
			{
				m_bRuning=TRUE; //m_bRuning=TRUE將使得后臺線程持續運行
				m_hThread=::CreateThread(NULL,0,CThreadBase::Thread,LPVOID(this),0,&m_dwThreadID);
				if(m_hThread==NULL)
				{
					m_bRuning=FALSE;
					bRet=FALSE;
				} //if(m_hThread==NULL)
			} //if(m_bRuning==FALSE)
			UnlockAccess();
		} //if(bActive)
		else
		{
			LockAccess();
			if(m_bRuning==TRUE)
			{
				//m_bRuning=FALSE將使線程終止運行
				m_bRuning=FALSE;
				UnlockAccess();
				//等待線程終止
				if(::WaitForSingleObject(m_hThread,5000)==WAIT_TIMEOUT)
				{
					//強行終止線程
					::TerminateThread(m_hThread,0);
				}
				::CloseHandle(m_hThread);
				m_hThread=NULL;
				m_dwThreadID=0;
			}
			else
				UnlockAccess();
		} //if(bActive) else
		return bRet;
	}
	//獲取對象線程的ID
	//<參數> 無
	//<返回值>
	//	如果因為線程互斥導致訪問對象失敗或對象線程未激活返回0,否則返回對象線程的ID。
	DWORD GetThreadID(void)
	{
		if(LockAccess()==FALSE)
			return 0;
		DWORD dwID=m_dwThreadID;
		UnlockAccess();
		return dwID;
	}
	//向對象線程拋送消息
	//<參數>
	//	uiMsg: 消息值
	//	wParam: 消息附加參數
	//	lParam: 消息附加參數
	//<返回值>
	//	如果成功返回TRUE,否則返回FALSE。
	BOOL PostThreadMessage(/*[in]*/UINT uiMsg,/*[in]*/WPARAM wParam,/*[in]*/LPARAM lParam)
	{
		if(LockAccess()==FALSE)
			return FALSE;
		BOOL bRet=FALSE;
		if(m_dwThreadID)
			bRet=::PostThreadMessage(m_dwThreadID,uiMsg,wParam,lParam);
		UnlockAccess();
		return bRet;
	}
	//設置對象線程的優先級
	//<參數>
	//	iPriority:線程優先級
	//<返回值>
	//	如果成功返回TRUE,否則返回FALSE。
	BOOL SetThreadPriority(/*[in]*/int iPriority=THREAD_PRIORITY_NORMAL)
	{
		if(LockAccess()==FALSE)
			return FALSE;
		BOOL bRet=FALSE;
		if(m_hThread!=NULL)
			bRet=::SetThreadPriority(m_hThread,iPriority);
		UnlockAccess();
		return bRet;
	}
	//判斷線程是否已經激活
	//<參數> 無
	//<返回值>
	//	如果線程已經激活返回TRUE,否則返回FALSE。
	BOOL IsActived(void)
	{
		LockAccess();
		BOOL bIsActived=m_bRuning;
		UnlockAccess();
		return bIsActived;
	}
protected:
	//線程處理函數,被對象線程不斷調用直到對象線程終止。
	//該函數如果返回FALSE,將使對象線程終止。
	//派生類通過重載該函數進入對象線程
	virtual BOOL ThreadProc(void){return TRUE;};
	//線程消息處理函數,對象線程在收到線程消息時調用該函數。
	//該函數如果返回FALSE,將使對象線程終止。
	//<參數>
	//	rMsg:對象線程收到的消息。
	virtual BOOL MessageProc(/*[in]*/MSG &rMsg){return TRUE;};
	//該函數在線程創建成功后被線程調用如果其返回FALSE,新線程將立即終止。
	//新線程在退出前將調用OnThreadDestroy。
	virtual BOOL OnThreadCreate(void){return TRUE;}
	//該函數在線程退出前被線程調用,其返回值將被作為線程的終止代碼。
	//<參數>
	//	ulExitCode:線程準備的終止代碼
	virtual ULONG OnThreadDestroy(/*[in]*/ULONG ulExitCode){return ulExitCode;}
protected:
	//鎖定對象的訪問,防止多線程訪問沖突
	//<參數>
	//	dwWait: 線程互斥等待時間,單位是ms
	//<返回值>
	//	如果成功成功鎖定鏈表則返回TRUE,否則返回FALSE。
	BOOL LockAccess(/*[in]*/DWORD dwWait=500)
	{
		if(m_hMutex==NULL)
			return TRUE;
		if(::WaitForSingleObject(m_hMutex,dwWait)==WAIT_TIMEOUT)
			return FALSE;
		return TRUE;
	}
	//解除對鏈表的鎖定,允許其它線程訪問鏈表
	void UnlockAccess(void)
	{
		if(m_hMutex)
			::ReleaseMutex(m_hMutex);
	}
private:
	//對象線程ID
	DWORD m_dwThreadID;
	//對象線程句柄
	HANDLE m_hThread;
	//對象訪問互斥量
	HANDLE m_hMutex;
	//對象線程激活標志
	BOOL m_bRuning;
	//對象線程入口函數
	static ULONG __stdcall Thread(/*[in]*/LPVOID lpParam);
};

//對象線程入口函數
//參見Win32sAPI手冊
inline ULONG __stdcall CThreadBase::Thread(/*[in]*/LPVOID lpParam)
{
	if(lpParam==NULL)
		return 0;
	CThreadBase * p=(CThreadBase *)lpParam;

	if(p->OnThreadCreate()==FALSE)
	{
		p->LockAccess();
		p->m_bRuning=FALSE;
		p->m_dwThreadID=0;
		p->m_hThread=NULL;
		p->UnlockAccess();
		::ExitThread(p->OnThreadDestroy(0));
	}
	MSG stMsg;
	//循環調用ThreadProc函數直到其返回FALSE或m_bRuning==FALSE,
	//如果收到線程消息則調用MessageProc處理消息
	while(p->m_bRuning==TRUE)
	{
		//如果收到線程消息...
		if(::PeekMessage(&stMsg,HWND(-1),0,0,PM_REMOVE)==TRUE)
		{
			if(p->MessageProc(stMsg)==FALSE)
			{
				if(p->LockAccess()==FALSE)
					continue;
				p->m_bRuning=FALSE;
				p->m_dwThreadID=0;
				p->m_hThread=NULL;
				p->UnlockAccess();
				break;
			}
		}
		if(p->ThreadProc()==FALSE)
		{
			if(p->LockAccess()==FALSE)
				continue;
			p->m_bRuning=FALSE;
			p->m_dwThreadID=0;
			p->m_hThread=NULL;
			p->UnlockAccess();
			break;
		}
	}
	while(::PeekMessage(&stMsg,HWND(-1),0,0,PM_REMOVE));
	::ExitThread(p->OnThreadDestroy(0));
	return 0;
}

#endif // !defined(CCL_THREADBAS_H_001064A8_932C_40ca_B559_7356BB029D6A_INCLUDED_)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品sm在线观看| 91精品办公室少妇高潮对白| 久久网这里都是精品| 国内精品写真在线观看| 国产午夜精品久久久久久久 | 国产乱码精品一区二区三 | 久久久av毛片精品| 国产91精品露脸国语对白| 国产精品久久久久影院老司| 日本韩国欧美在线| 日本aⅴ亚洲精品中文乱码| 国产亚洲婷婷免费| 一本大道久久a久久精二百| 亚洲国产精品自拍| 精品国产亚洲在线| 91网站在线观看视频| 性做久久久久久免费观看| 欧美videofree性高清杂交| 成人av第一页| 午夜一区二区三区视频| 久久久午夜精品| 色婷婷综合久久| 激情小说欧美图片| 日韩理论片网站| 欧美一三区三区四区免费在线看| 国模大尺度一区二区三区| 亚洲欧美日韩国产一区二区三区| 欧美日韩国产电影| 成人黄页毛片网站| 日韩成人免费看| 欧美韩国日本不卡| 欧美高清dvd| 成人免费电影视频| 免费成人小视频| 亚洲最新视频在线观看| 日韩欧美一二区| 色天使色偷偷av一区二区| 韩国一区二区视频| 亚洲国产一二三| 国产日韩欧美制服另类| 欧美精品久久天天躁| 成人黄色a**站在线观看| 麻豆成人久久精品二区三区红 | 欧美午夜免费电影| 成人做爰69片免费看网站| 午夜a成v人精品| 亚洲视频香蕉人妖| 国产日韩精品视频一区| 日韩一区二区高清| 欧美色爱综合网| 99国产欧美另类久久久精品| 黄色日韩三级电影| 麻豆中文一区二区| 视频一区欧美精品| 亚洲精品日韩一| 中文字幕一区三区| 久久久精品影视| 精品少妇一区二区三区在线播放| 欧美日韩免费一区二区三区视频| 99精品视频一区二区| 高清在线成人网| 国产精品亚洲视频| 韩国女主播一区| 免费高清成人在线| 免费人成精品欧美精品| 亚洲第四色夜色| 亚洲h精品动漫在线观看| 亚洲图片欧美色图| 亚洲精品一二三四区| 亚洲色图都市小说| 亚洲男人的天堂网| 日韩伦理免费电影| 亚洲视频免费看| 亚洲乱码国产乱码精品精小说| 国产精品美女一区二区| 国产精品区一区二区三| 国产精品拍天天在线| 中文字幕第一页久久| 国产精品丝袜在线| 亚洲欧洲日产国产综合网| 国产精品三级久久久久三级| 中文字幕av一区二区三区| 国产精品理论片在线观看| 1区2区3区精品视频| 中文字幕一区二区三区精华液 | 亚洲精品老司机| 一区二区三区国产精华| 亚洲高清视频的网址| 日韩精品亚洲一区| 麻豆一区二区三区| 国产精品18久久久久久久网站| 夫妻av一区二区| 99r精品视频| 欧美色图天堂网| 欧美一区二区在线免费播放| 精品国产伦一区二区三区观看方式| 欧美精品一区二区三区一线天视频| 国产午夜久久久久| 亚洲另类春色校园小说| 日韩 欧美一区二区三区| 国产精品99久久久久久久vr| 9i看片成人免费高清| 欧美日韩综合不卡| 久久久久国产精品麻豆ai换脸| 国产精品不卡一区二区三区| 亚洲第一成人在线| 国产成人午夜高潮毛片| 在线免费观看视频一区| 日韩丝袜情趣美女图片| 国产欧美日韩另类视频免费观看 | 国产清纯白嫩初高生在线观看91 | 欧美一个色资源| 亚洲国产精品成人综合色在线婷婷| 一区二区在线观看视频在线观看| 奇米四色…亚洲| 96av麻豆蜜桃一区二区| 欧美精品自拍偷拍动漫精品| 久久精品亚洲乱码伦伦中文| 亚洲成精国产精品女| 国产毛片精品视频| 欧美亚洲愉拍一区二区| 欧美精品一区二区在线播放| 亚洲一区二区三区在线看| 国产不卡在线视频| 欧美亚一区二区| 欧美国产激情一区二区三区蜜月| 亚洲一区二区三区四区在线| 国产美女精品一区二区三区| 欧美亚洲综合久久| 国产精品久久久久婷婷| 黄色小说综合网站| 欧美久久一二区| 亚洲欧美日韩人成在线播放| 国产综合久久久久影院| 欧美三级电影网站| 亚洲激情第一区| 丁香六月久久综合狠狠色| 欧美va日韩va| 日韩和欧美一区二区三区| 色婷婷久久久久swag精品| 国产清纯白嫩初高生在线观看91| 免费视频一区二区| 欧美色成人综合| 夜夜夜精品看看| 色婷婷精品久久二区二区蜜臀av | 日韩一级视频免费观看在线| 亚洲欧美另类久久久精品2019| 国产在线播放一区| 精品日韩99亚洲| 奇米色一区二区三区四区| 欧美另类z0zxhd电影| 亚洲美女电影在线| 一本色道亚洲精品aⅴ| 国产亚洲综合色| 国产综合色视频| 亚洲精品一区二区三区影院 | 国产人成一区二区三区影院| 久久精品国产精品亚洲红杏| 欧美日韩成人综合天天影院 | 日韩欧美激情一区| 日韩黄色免费网站| 4438x亚洲最大成人网| 亚洲国产日产av| 欧美日韩欧美一区二区| 亚洲6080在线| 日韩一级二级三级| 美女高潮久久久| 久久亚洲影视婷婷| 国产精品一区二区三区99| 久久久久久久网| 成人黄色软件下载| 国产精品久久久久久久第一福利 | 亚洲一区在线观看视频| 欧美三级资源在线| 婷婷夜色潮精品综合在线| 欧美日韩久久一区| 日本视频一区二区| 日韩精品中午字幕| 韩国av一区二区三区| 国产亚洲欧美日韩在线一区| 国产黄色精品网站| 亚洲婷婷在线视频| 91成人免费在线| 日韩二区三区在线观看| 欧美v日韩v国产v| 国产成人自拍高清视频在线免费播放| 国产精品私人影院| 欧美视频一区在线| 久久机这里只有精品| 久久久久久久电影| 色综合天天综合| 五月婷婷另类国产| 欧美精品一区二区不卡| 成人精品电影在线观看| 亚洲黄网站在线观看| 欧美一卡2卡3卡4卡| 国产成人av电影在线观看| 一区二区三区四区精品在线视频 | 国产精品国产三级国产普通话三级| av在线综合网|