//开启线程 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++多事件等待线程
最新推荐文章于 2023-09-29 18:52:53 发布
这篇博客探讨了如何在C++中使用多事件等待线程进行并发处理。通过创建并设置事件句柄,然后在服务处理函数中调用WaitForMultipleObjects函数来等待这些事件。当事件触发时,根据不同的事件索引执行相应的处理逻辑。
摘要由CSDN通过智能技术生成