刚开始学多线程就遇难题了
小弟可以说是刚开始学多线程的问题,可能有些思想转变不过来请指教:
#include<iostream.h>
#include<process.h>
#include<windows.h>
#include<stdio.h>
BOOL repeat=TRUE;
DWORD WINAPI MyThread1(LPVOID lpParameter){
while(repeat){
printf("How are you?\n");
Sleep(1);
}
DWORD exitCode;
ExitThread(exitCode);
return 0;
}
DWORD WINAPI MyThread2(LPVOID lpParameter){
while(repeat){
printf("very well!\n");
Sleep(1);
}
DWORD exitCode;//作用是用来保存退出码
ExitThread(exitCode);
// printf("Thread Exit Code:XXXXXXXXXXXXXXXXXXXX");
return 0;
}
//DWORD WINAPI KillThread(LPVOID lpParameter){
// repeat=FALSE;
// return 0;
//}
int main(int argc,char *argv[]){
HANDLE handle1,handle2;
DWORD dw1,dw2;
handle1=CreateThread(NULL,0,MyThread1,NULL,0,&dw1);
if(handle1==NULL){
printf("create thread 1 failed!\n");
return -1;
}
handle2=CreateThread(NULL,0,MyThread2,NULL,0,&dw2);
if(handle2==NULL){
printf("create thread 2 failed!\n");
return -1;
}
Sleep(1000);
// handle3=CreateThread(NULL,0,KillThread,NULL,0,&dw3);
// if(handle3==NULL){
// printf("create thread 3 failed!\n");
// return -1;
// }
CloseHandle(handle1);
CloseHandle(handle2);
// CloseHandle(handle3);
return 0;
}
问题是这样的:
在多线程的创建中,是否就调用线程函数?
在这里我将线程handle3去掉后,按照我的理解,应该是进入一个死循环,可是运行了有限的次数后,就结束了,不太明白原因?
在线程函数中,ExitThread()执行了吗,为什么我加上printf("Thread Exit Code:XXXXXXXXXXXXXXXXXXXX");后没有输出?