#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <windowsx.h>
#include <conio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#include <math.h>
#include <io.h>
#include <fcntl.h>
#define MAX_THREADS 3
int terminated_thread=0;
DWORD WINAPI Printer_Thread(LPVOID data);
DWORD WINAPI Printer_Thread(LPVOID data){
for (;;)
{
printf("%d",(int)data+1);
Sleep(100);
if(terminated_thread)
break;
}
return (DWORD)data;
}
void main(void){
HANDLE thread_Handle[MAX_THREADS];
DWORD thread_id[MAX_THREADS];
printf("/nStarting all thread.../n");
for(int index=0;index<MAX_THREADS;index++){
thread_Handle[index]=CreateThread(NULL,
0,
Printer_Thread,
(LPVOID)index,
0,
&thread_id[index]);///创建线路
}
for(index=0;index<75;index++){
printf("4");
Sleep(100);
}
while(!kbhit());
getch();
terminated_thread=1;
WaitForMultipleObjects(MAX_THREADS,
thread_Handle,
TRUE,
INFINITE);///检索指定对象的当前状态,如果无信号处于很有效率的等待状态。
for(index=0;index<MAX_THREADS;index++){//指定句柄无效
CloseHandle(thread_Handle[index]);
}
printf("/nALL threads teminated./n");
}
等待合适时机结束线程
最新推荐文章于 2024-03-02 19:41:46 发布