Windows线程(使用Event同步)

来源:互联网 发布:黑色沙漠城镇优化 编辑:程序博客网 时间:2024/06/01 07:29

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. }

 

原创粉丝点击