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
更多(QMutex、QSemaphore与QReadWriteLock)
QWaitCondition