关于多线程的问题,为什么每次显示的都不一样?!整个代码只有10行哈,谢谢

来源:百度知道 编辑:UC知道 时间:2024/07/04 05:29:15
先把源代码贴上来
#include<windows.h>
#include<iostream.h>

DWORD WINAPI Fun1Proc(LPVOID lpParameter);

void main()
{
HANDLE hThread1;
hThread1 = CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
CloseHandle(hThread1);

cout<<"主线程"<<endl;
}

DWORD WINAPI Fun1Proc(LPVOID lpParameter)
{
cout<<"线程1"<<endl;
return 0;
}

我反复运行了这段代码10多次,发现它会有两种显示。
第一种
主线程
主线程
线程1
按任意键退出。。。。

第二种:
主线程
按任意键退出。。。。

这个,怎么会这样呢??!!!好怪异。。。。。为什么啊???希望哪位大虾能告诉下我,谢谢了哈!
首先谢谢这位的回答。
我也知道主线程退出的时候,子线程会退出。但是,现在问题是,怎么会有第一种情况的发生?!明明主线程都退出了,居然,子线程还运行了一次才退出?!而且,主线程运行了2次。。。。。为什么啊?
我用的是VS2008,VC++6.0也用过,都有那种情况出现。。。。

你说的第一种情况我真没碰到,运行了十几次,一次没有,都是只显示了主线程,就是你说的第二种

————————————————————————-
主线程退出后子线程肯定就退出了,需要在主线程中等待子线程结束

hThread1 = CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
WaitForSingleObject(hThread1,INFINITE);//加上这一句
CloseHandle(hThread1);