线程间的消息传递

下面是个比较经典的例子

#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 terminate_threads=0;
int active_threads=0;
DWORD WINAPI Printer_Thread(LPVOID data);
DWORD WINAPI Printer_Thread(LPVOID data){
    for (;;)
    {

        printf("%d",(int)data+1);
        Sleep(100);

        if(terminate_threads)//主线程通知要结束
            break;
    }
    if(active_threads>0)//通过主线程是否子线程处理完毕
      active_threads--;
    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]);///创建线路
          active_threads++;
     }
     for(index=0;index<75;index++){
         printf("4");
         Sleep(100);
     }
     while(!kbhit());//当没有键按下  是非阻塞函数
     getch(); //在执行时,检测按下什么键,如果不按键该函数不返回;是阻塞函数
     terminate_threads=1;
     while(active_threads);

     for(index=0;index<MAX_THREADS;index++){//指定句柄无效
         CloseHandle(thread_Handle[index]);
     }
     printf("/nALL threads teminated./n");
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值