MFC 主线程等待子线程退出函数

void WaitForThreadExit(void)
{
 DWORD dwRet;
 MSG msg;
 int wait_count=4;
 int nExitThreadCount=0;

 while(1)
 {
  dwRet = MsgWaitForMultipleObjects(wait_count, hArray, FALSE, INFINITE, QS_ALLINPUT);

  if (dwRet == WAIT_OBJECT_0 + wait_count)
  {
   while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
   {
    if (msg.message==WM_QUIT||msg.message==WM_CLOSE)  
    {
    
     break;
    }

    TranslateMessage(&msg);
    DispatchMessage(&msg);
   }
  }else if (dwRet >= WAIT_OBJECT_0 && dwRet < WAIT_OBJECT_0+ wait_count)
  {
   nExitThreadCount++;
   if (nExitThreadCount < 4)
   {

    TRACE("一个线程退出了\n");

    int nIndex=dwRet-WAIT_OBJECT_0;

    hArray[nIndex]=hArray[wait_count-1];

    hArray[wait_count-1]=NULL;
    wait_count--;
   }else
   {
    TRACE("4个线程都退出了\n");
  
    break;
   }
  }else
  {
   DWORD dErrCode=GetLastError();
 
   break;
  }

 }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值