WaitForSingleObject用法(Windows下的線程同步)

1、頭文件

#include <windows.h>

2、使用

//a、聲明一個句柄 
	HANDLE m_Event; 
//b、初始化並重置
	m_Event= CreateEvent(NULL, TRUE, FALSE, NULL);
	ResetEvent(m_Event); 
 
//c、使用  
void Function1() 
{
	ResetEvent(m_Event);
	 //執行到此處,等待500毫秒直到超時或 SetEvent(m_Event);被調用 
	 //如果500毫秒內SetEvent(m_Event);被調用,500毫秒後才返回到此處運行
	int res = WaitForSingleObject(m_Event, 500);
	switch (res)
	{
	case WAIT_OBJECT_0:
	// m_Event所代表的進程在500毫秒內結束
	break;
	
	case WAIT_TIMEOUT:
	// 等待時間超過5秒
	break; 
	
	case WAIT_FAILED:
	// 函數調用失敗,比如傳遞了一個無效的句柄
	break;
	}  
	
	ResetEvent(m_Event);//重置
} 

void Function2() 
{ 
		SetEvent(m_Event); 
		....//這段代碼根據等待時間,可能只執行一部分
}

參考:https://blog.csdn.net/fuyuehua22/article/details/45058399

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章