zoukankan      html  css  js  c++  java
  • 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. }
  • 相关阅读:
    JS解析XML文件和XML字符串
    查询优化的方法
    Oracle 常用操作
    取得同一网段内的IP和MAC地址!
    域名知多少?
    Oracle 数据库链路 同义词
    提高查询速度的方法【百万级以上数据】
    ExtJs学习之路从Grid中得到数据
    一个左边停靠且可以展开和隐藏的菜单【Jquery插件】
    Go流程控制
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6168139.html
Copyright © 2011-2022 走看看