使用WaitForMultipleObjects实现线程间通信

本文通过两个示例展示了如何使用Windows API中的WaitForMultipleObjects函数来处理多个线程或事件的同步问题。示例中创建了两个事件句柄,并在循环中使用WaitForMultipleObjects函数等待这两个事件句柄的状态变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 这样一来要处理就比较简单了,做个循环就可以了:  
   
  HANDLE   Handles[2];  
  Handles[0]   =   CreateEvent(NULL,   FALSE,   TRUE,   NULL);  
  Handles[1]   =   CreateEvent(NULL,   FALSE,   TRUE,   NULL);  
  while(   TRUE   )  
  {  
          switch(::WaitForMultipleObjects(2,     Handles,   FALSE,INFINITE))  
          {  
                  case   WAIT_OBJECT_0:  
                          //   do   some   thing...  
                          break;  
                  case   WAIT_OBJECT_1:  
                          //   do   some   thing...  
                          break;  
                  ...  
          }  
  }

 

 

二:

  HANDLE   dwHandles[2];  
  dwHandles[0]   =   XXX1;  
  dwHandles[1]   =   XXX2;  
  bWaitStatus   =   WaitForMultipleObjects(2,     dwHandles,   FALSE,INFINITE);      
  switch   (bWaitStatus)  
  {  
  case   WAIT_OBJECT_0:  
          //   do   something...  
          break;  
  case   WAIT_OBJECT_0   +   1:  
          //   do   something...  
          break;  
  default:  
          break;  
  }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值