//开启线程
void run()
{
h_events[0] = CreateEvent(NULL, FALSE, FALSE, NULL); //EVENTS HANDLE
h_events[1] = CreateEvent(NULL, FALSE, FALSE, NULL); //ENEVTS HANDLE
if (m_arbThread != NULL)
{
os_thread_pool_try_free(m_gThreadPool, m_arbThread, 30);
m_arbThread = NULL;
}
m_arbThread = os_thread_pool_alloc(
m_gThreadPool, pServiceHandler, (uint32_t)this, 30);
}
//static函数
int32_t pServiceHandler(uint32_t param)
{
if (param)
{
return ((CmsArbitrateEvents*)param)->serviceHandler();
}
return 100;
}
int32_t serviceHandler()
{
int index = 0;
index = WaitForMultipleObjects(2,h_events,FALSE,500);
//第二个事件发生
if (index == WAIT_OBJECT_0 + 1)
{
continue;
}
//第一个个事件发生
if (index == WAIT_OBJECT_0)
{
continue;
}
//超时处理(500毫秒)
else if (index == WAIT_TIMEOUT)
{
continue;
}
}
//事件触发
SetEvent(h_events[0]);
C++多事件等待线程
最新推荐文章于 2025-06-04 21:07:03 发布