如果连续启动同一个线程且线程函数相同,怎样判断那一个线程先结束呢?谢谢

解决方案 »

  1.   

    设定不同的线程退出码.
    ::ExitThread(0)  0就是线程退出码
      

  2.   

    线程函数可以返回值的,你给每个启动的线程传递一个递加的ID值,在返回时返回这个ID值,在Debug窗口看返回值就知道了,或者在return前,TRACE这个ID值也能看到啊
      

  3.   

    你可以通过pParam传入不同参数,从而分辨出不同的两个线程判断哪个先结束,如果只是人看的,那可以在线程中TRACE一下
    如果是程序要判断的,那就定义两个不同的变量传给两个线程
      

  4.   

    AfxBeginThread(ThreadFunction, pParam1);
    AfxBeginThread(ThreadFunction, pParam2);UINT ThreadFunction (LPVOID pParam)
    {
      PostMessage("Thread1 is over!");
    }
      

  5.   

    创建后使用 WaitForMultipleObjects等待其中一个线程结束
      

  6.   

    线程完毕的时候,return不同的值,通过不同的返回值来判断。
      

  7.   


    for(pParam=0;pParam<100;pParam++)
      AfxBeginThread(ThreadFunction, pParam);UINT ThreadFunction (LPVOID pParam)
    {
      CString exitque;
      exitque.Format("%d",pParam); 
      showList.add(exitque);  //将处理的线程编号填入全局对象
      return 1;
    }
    线程返回后,其占用的进程堆栈被收回,它的返回值按照系统默认会填入一个结构等待系统处理,而你可以用MSDN规定的函数得到这个返回值,我一般不去处理线程的返回值,这个交给系统做最好,通过全局变量的设置会更轻松些。(不知道多线程操作列表类会不会有默认的机制调节,否则就要自己用临界区或者其他机制规避)
      

  8.   

    怎样得到return返回的值呀?
    ----
    GetExitCodeThread()
    GetThreadTime()获得一个线程执行占CPU时间