请问我启动一个线程来执行某函数,该函数退出返回后如何通知线程?

解决方案 »

  1.   

    简单的可以用线程同步的原子操作也就是设置一个全局的bool,默认false.当你的子线程函数结束时,将其至true.主线程循环操作判断这个Bool什么时候true。复杂的可以使用消息或者event等等。
      

  2.   

    PostThreadMessage 你建个线程处理消息,用这个函数给他发消息
    PostMessage 给窗口发消息,这个最方便
    GetExitCodeThread 不断的用这个函数获取线程返回值,是STILL_ACTIVE的话还在运行
    WaitForSingleObject 等待线程句柄
      

  3.   

    俺有一个简便的方法:
    1、创建一个CEvent对象;
    2、启动线程,线程伪代码:
    {
      .......
      xxxxx();
      WaitForSingleObject(m_hEvent, -1);
      .......
    }
    3、函数xxxxx():void xxxxx()
    {
      //Do something
      .....
      SetEvent(m_hEvent);
    }
      

  4.   

    ExitThread然后WaitForSingeObject等待返回
      

  5.   

    误导别人啊,event 这么用,有什么用呢
    如果是主线程需要等待子线程的结果,可以在主线程创建子线程后,wait该线程handle,如果主线程不能阻塞在这里,子线程可以发消息给主,如果是win32程序的话
      

  6.   

    顶楼上的 再加Event纯属浪费 直接wait线程句柄就行了
      

  7.   


    俺写完了才发现那样多余,可CSDN不能修改帖子,MD。
    向LZ致歉
      

  8.   

    额,谢谢各位大虾,不过不知是大家没明白我的意思还是我表达的不清楚,我想用
    thread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)addFun,(void*)1,0,NULL);这样创建线程来执行addFun函数,函数退出后通知该线程结束,是这个意思,请问如何操作?