int main()
{
   f();
HANDLE         hThread;
DWORD         dwThreadId;
hThread = ::CreateThread(NULL, 0, g, 
                           NULL, 0, &dwThreadId);
CloseHandle(hThread);h();
}
DWORD  WINAPI g()
{
}
这一段程序各函数的执行顺序是怎么的,对线程不清楚 !

解决方案 »

  1.   

    先是f(),
    接下来g和h的顺序是不确定的,有可能先g后h,也有可能先h后g,不过大多时候是并发执行的,主要看程序运行时的系统环境。
      

  2.   

    线程是CPU的调度单位,当你创建了子hTread时,g()不一定运行,因为此时CPU还不一定空闲,就算空闲,它也不一定会选择hTread,
    运行次序f()->CreateThread->{g()或者CloseHandle}
      

  3.   

    当然不是啊,挂在那里是一定要执行的,只是正好CPU有空,并且有空的CPU选择了htread运行。不然就等咯
      

  4.   

    cpu在选择线程时是按概率随即的.