程序很简单:#include <windows.h>
#include <iostream.h>DWORD WINAPI Fun1Proc(  LPVOID lpParameter );int main()
{
HANDLE hThread1;
hThread1 = CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
CloseHandle(hThread1);
cout<<"main thread is running"<<endl;
Sleep(10);//放弃执行权力,才能执行线程1
return 0;
}DWORD WINAPI Fun1Proc(  LPVOID lpParameter )
{
cout<<"thread1 is running"<<endl;
return 0;
}
但是我们发现了一些奇怪的事情:
就是每次打印的语句数不确定啊?有时候是一句"main thread is running",有时候是两句;感觉看不出来什么规律,菜鸟真心求助!

解决方案 »

  1.   

    main在主线程中,Fun1Proc在另一线程中。那个线程得到时间片可以执行是随机的。由系统决定。所以运行出现的结果也是随机的。但主线程一定会顺序执行完,所以"main thread is running"一定会被输出。
    而Fun1Proc中的语句就得看运气了,如果main还没执行完而CPU时间片刚运行它执行,那它就能输出。如果main执行完了,也没有CPU时间片给它执行,那它就啥也不会输出。
      

  2.   

    在closehandle之前你waitforsigleobject一下,就会一直打两句了。
      

  3.   

    我想知道的是,为什么main函数里面的"main thread is running"为什么有时候会打印两次?
      

  4.   

    用_beginthread代替CreateThread吧,创建线程之后需要很多初始化工作,不然会出各种诡异的问题。closehandle也可以省略。