#include <windows.h>
#include <iostream>
using namespace std;DWORD WINAPI Fun1(LPVOID lpParameter);int main()
{
HANDLE hThread;
hThread = CreateThread(NULL, 0, Fun1, NULL, 0, NULL);
BOOL isClosed = CloseHandle(hThread);
cout << "Main thread is running." << endl;
//Sleep(100);
return 0;
}DWORD WINAPI Fun1(LPVOID lpParameter)
{
cout << "thread1 is running." << endl;
return 0;
}这个程序的结果应该是只出现Main thread is running.这一句吧,老师演示的结果也是这样的,可是我总是出现Main thread is running.thread1 is running.
请按任意键继续. . .这样的结果,不但两句都出现了,而且回车都没有了。而且有的同学和老师的结果一样,有的就是不一样,是不是和运行的环境有关系??
请指教一下

解决方案 »

  1.   

    用WaitForSingleObject 等一下第一个子线程,再执行你的主线程中的输出语句。
      

  2.   

    Thread是由操作系统进行调度的,你搞不清它什么时候被调度,结果也可能是不一样的,建议看一下<操作系统原理>这本书
      

  3.   

    你加个sleep,两句肯定都会打印出来的,比较多的情况就是你先main后thread了。closevhandle并不会使线程结束哟。
      

  4.   

    这与线程调度有关,次线程是否立即执行,与cpu是否有空闲时间,操作系统是否立即调度该线程运行等有关.
      

  5.   

    加一个SLEEP();