首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

关于线程的怪异现象,该怎么处理

2012-04-02 
关于线程的怪异现象随便写个程序想看看线程的运作方式的,遇到一个怪异的现象。先看源代码#includestdafx.h

关于线程的怪异现象
随便写个程序想看看线程的运作方式的,遇到一个怪异的现象。
先看源代码
#include   "stdafx.h "
#include   <iostream.h>

DWORD   WINAPI   MyThread(LPVOID   n);

int   main(int   argc,   char*   argv[])
{
HANDLE   hThread[4];
int   i;

for(i=0;i <4;i++)
{
hThread[i]=CreateThread(NULL,0,MyThread,(LPVOID)i,NULL,NULL);
}

WaitForSingleObject(hThread[0],INFINITE);
cout < < "Wake   Up! " < <endl;
return   0;
}

DWORD   WINAPI   MyThread(LPVOID   n)
{
int   num=(int)n;
int   count=0;
cout < < "Thread   " < <num < < "   Launched! " < <endl;
while(1)
{
count++;
if(count> 5)
{
cout < < "Thread   " < <num < < "   Out! " < <endl;
return   0;
}
Sleep(1000);
}
return   0;
}


结果是,每个Thread都Out了3次,太奇怪了,一个现成明明退出了,怎么会反复把
cout < < "Thread   " < <num < < "   Out! " < <endl;执行三遍呢?

[解决办法]
不应该出现这样的情况.我运行了没有出现你说的情况.只能是有的线程没来得急执行完就随主线程的退出而推出了.应该不会出现你说的情况.别人有什么高见?

热点排行