疑惑!!关于线程问题的!请高手帮忙!
前两天我在论坛上问了一个用C++编写一个多线程程序的问题, hcj2002(流浪者·躬自厚而薄责于人)不吝赐教,给了下面这个这个程序,在此我对他非常地感谢。程序后来我也调试过,也调通了,只是对其中一些地方不太理解,在此想跟CSDN中的各位高手一起探讨探讨,如果 hcj2002(流浪者·躬自厚而薄责于人)本人能再赐教,那更是不胜感激!
hcj2002(流浪者·躬自厚而薄责于人)给的源程序如下:
#include<windows.h>
#include<process.h>
#include<iostream.h>
#include<stdio.h>
void DisplayEven( void );
void DisplayOdd( void );
int main ( void )
{
HANDLE thd1,thd2;
DWORD tid1,tid2;
char c;
thd1=CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)DisplayEven, NULL, 0,&tid1);
thd2=CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)DisplayOdd, NULL, 0, &tid2);
cout<<"Please press 0 to EXIT !!!"<<endl;
c=getchar();
if( c == 0 )
{
if( thd1 != NULL)
{
CloseHandle( thd1 );
}
if( thd2 != NULL)
{
CloseHandle( thd2 );
}
}
return 0;
}
void DisplayEven( void )
{
int i=0;
while( i<20 )
{
cout<<" "<<i<<endl;
i=i+2;
Sleep( 2000 );
}
}
void DisplayOdd( void )
{
int i=1;
while( i<20 )
{
// cout<<endl;
cout<<" "<<i<<endl;
i=i+2;
Sleep( 2000 );
}
}
首先,程序运行时输入0并不会停止,我想这应该是if()的问题,对c定义的是char型,但这句if(c==0)我想并没有起多少作用;在判断句柄不为null这句中if( thd1 != NULL),= 号和!= 的作用是一样的,并没有对程序的运行起到影响,不知为何;主函数定义成int与定义成void也不会有任何影响不知为何,(不过我想这应该不成问题,呵呵);还有,windows.h这个头文件中关于线程的函数都有哪些阿?它们的用法都是怎样的?