读书人

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

发布时间: 2012-04-02 19:58:59 作者: rapoo

关于线程的怪异现象
随便写个程序想看看线程的运作方式的,遇到一个怪异的现象。
先看源代码
#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;执行三遍呢?

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

读书人网 >VC/MFC

热点推荐