我现在有五个线程都调用了StarInstallApp(int pos)函数,我想使用事件让我的五个线程依次调用下面的线程,即调用StarInstallApp(int pos),以事件的形式来形成我的线程队列,但下面我写的代码不好用,请教了。
void StarInstallApp(int pos)
{
    evFinish=CreateEvent(NULL,false,false,NULL);
    g_StarInstallAppThread[15] =::CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)StarInstallAppThreadProc, NULL, 0, NULL);
}DWORD static StarInstallAppThreadProc(LPVOID lpParameter)
{
WaitForSingleObject(evFinish,INFINITE);
         int k=0;
SetEvent(evFinish);}

解决方案 »

  1.   

    evFinish=CreateEvent(NULL,TRUE,false,NULL);初始化有信号,
      

  2.   


    我改了,但是我的两个线程如果同时调用StarInstallApp(int pos)这个函数时,会使一个线程阻塞并且上个线程执行完了,这个线程也不会被排队执行。
      

  3.   


    现在还有一问题,就是我在线程函数里写的东西也会被阻塞到,显示不了。DWORD static StarInstallAppThreadProc(LPVOID lpParameter)
    {
        WaitForSingleObject(evFinish,INFINITE);
        XXXX->settext("正在执行");
        ...
        ...
        ...
        SetEvent(evFinish);
        XXXX->settext("执行完毕");
    }  其中这一句:XXXX->settext("正在执行"); 界面上被卡死了,看不到文字的变换,就直接显示最后一句“执行完毕了”。