请帮我看看这个是怎么回事!关于线程方面的。
我写了一个线程的测试程序,但是输出很奇怪。
请帮我看看。
#include <iostream>
#include <windows>
#include <process>
using namespace std;
static long count1=0;
static long count2=0;
HANDLE hThread1;
DWORD ThreadID1;
HANDLE hThread2;
DWORD ThreadID2;
DWORD ExitCode;
BOOL bThread1=false;
BOOL bThread2=false;
VOID fun(VOID );
void fun2(void);
void main()
{
HANDLE hThread1;
DWORD ThreadID1;
HANDLE hThread2;
DWORD ThreadID2;
DWORD ExitCode;
if( hThread1=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)fun, NULL, 0, &ThreadID1))
bThread1=true;
if(hThread2=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)fun2, NULL, 0, &ThreadID2))
bThread2=true;
//cout<<ThreadID<<endl;
while(bThread1||bThread2)
{ //if(count1>=5)
// {
//GetExitCodeThread(hThread1, &ExitCode);
//ExitThread(ExitCode);
//TerminateThread(hThread1, ExitCode);
//CloseHandle(hThread1);
// cout<<hThread1<<endl;
// }
// if(count2>=10)
// {
//GetExitCodeThread(hThread2, &ExitCode);
// ExitThread(ExitCode);
//TerminateThread(hThread2, ExitCode);
//CloseHandle(hThread2);
//cout<<hThread2<<endl;
// }
}
}
VOID fun(VOID )
{
while(1)
{
if(count1==5)
{
GetExitCodeThread(hThread1, &ExitCode);
bThread1=false;
//CloseHandle(hThread1);
ExitThread(ExitCode);
}
count1++;
cout<<"fun1 runing "<<count1<<endl;
Sleep(100);
}
}
void fun2(void)
{
while(1)
{ if(count2==5)
{
GetExitCodeThread(hThread2, &ExitCode);
bThread2=false;
//CloseHandle(hThread2);
ExitThread(ExitCode);
}
count2++;
cout<<"fun2 runing "<< count2 <<endl;
Sleep(100);
}
}
当fun() fun2()里的count1,count2 取小于9的值可以运行出预想的结果
如下:
fun1 runing 1
fun2 runing 1
fun1 runing 2
fun2 runing 2
fun1 runing 3
fun2 runing 3
fun1 runing 4
fun2 runing 4
fun1 runing 5
fun2 runing 5
请按任意键继续. . .
但是当大于或是等于9的时候。因改是正好等于9的时候
fun1 runing 1
fun2 runing 1
fun1 runing 2
fun2 runing 2
fun1 runing 3
fun2 runing 3
fun1 runing 4
fun2 runing 4
fun1 runing 5
fun2 runing 5
fun1 runing 6
fun2 runing 6
fun1 runing 7
fun2 runing 7
fun1 runing 8
fun2 runing 8
fun1 runing 99fun2 runing 9
fun2 runing 10
fun1 runing 10
请按任意键继续. . .
我用的是Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
请帮我看看,谢谢!
我回家,回来给分!