Windows线程(使用Event同步)

Windows线程(使用Event同步) 佟强 2008.10.9

  1. #include <stdio.h>
  2. #include <windows.h>
  3. //线程函数
  4. DWORD WINAPI MyThreadProc(LPVOID lpParameter);
  5. //用户定义的类
  6. class MyThreadParam{
  7. public:
  8.  void myfunc();
  9. };
  10. HANDLE ev;  //事件句柄
  11. int main(int argc,char* argv[]){
  12.  DWORD myThreadID; //线程ID
  13.  MyThreadParam threadParam; //线程参数,可以传递任何类型的指针
  14.  HANDLE h; //线程句柄
  15.  //创建事件,初始为无信号,手工重置
  16.  ev = CreateEvent(NULL,TRUE,FALSE,"MyEventName");
  17.  h = CreateThread(NULL,               //线程属性
  18.                      0,                            //stack大小,0使用默认堆栈大小
  19.          MyThreadProc,      //线程函数
  20.          &threadParam,      //线程参数,LPVOID类型
  21.          0,                          //线程标志
  22.          &myThreadID      //线程ID,输出值
  23.          );
  24.  printf("Thread ID is %d/n",myThreadID);
  25.  //等待事件有信号,即等待线程结束
  26.  WaitForSingleObject(ev,INFINITE);
  27.  printf("Thread %d terminated!/n",myThreadID);
  28.  //重置信号为无信号
  29.  ResetEvent(ev);
  30.  return 0;
  31. }
  32. DWORD WINAPI MyThreadProc(LPVOID lpParameter){
  33.  MyThreadParam *param = (MyThreadParam*)lpParameter;
  34.  for(int i=0; i<10; i++){
  35.   param->myfunc();
  36.  }
  37.  //置事件为有信号
  38.  SetEvent(ev);
  39.  return 0;
  40. }
  41. void MyThreadParam::myfunc(){
  42.  printf("Hello Thread!/n");
  43. }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值