我用AfxBeginThread()开了多线程,打算等每个线程都执行完毕后,主线程再往下执行。就在主线程里设置了等待函WaitForMultipleObject()  但是总是失败,程序会死掉。
我想可能是因为我每个新线程中有弹出对话框, 那么怎么改呢?  才能实现主线程等待所有线程执行完毕呢?

解决方案 »

  1.   

    提个方案供参考
    做个线程计数,线程启动时在线程内部把这个全局计数加一
    结束时减一
    做好互斥
    主线程while (计数 != 0) Sleep(10);
      

  2.   

    每个线程里面的信号量你都设置了?WaitForMultipleObject函数里有个参数是代表等待其中任何一个信号量还是所有信号量,你没有弄错? 还用如果用WaitForMultipleObject,你需要等待一组信号量,这组信号量必须是你在子线程对话框返回后置位的. 建议你用一个信号量和一个全局的变量:
    父线程中:
    int i=0;
    e = createevent();
    {
    ...
    int j=0;
    for(;j<10,j++)
    AfxBeginThread();
    waitforsingleEvent(&e);
    ...
    }
    子线程中:
    {
    //进入临界区
    i++;
    if(i==9)
    setevent(e);
    //退出临界区/*
    子线程功能部分
    */}
      

  3.   

    试试 MsgWaitForMultipleObjects