博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Win32 线程的事件使用
阅读量:4204 次
发布时间:2019-05-26

本文共 1455 字,大约阅读时间需要 4 分钟。

HANDLE WINAPI CreateEvent(  LPSECURITY_ATTRIBUTES lpEventAttributes,  BOOL bManualReset,  // TRUE = 手动复位,FALSE = 自动复位  BOOL bInitialState, // TRUE = Singled,FALSE = Unsingled  LPCTSTR lpName);

  一个Event被创建以后,可以用OpenEvent来获得它的Handle,用CloseHandle来关闭它,用SetEvent或PulseEvent来设置它使其有信号,用ResetEvent来使其无信号,用WaitForSingleObject或WaitForMultipleObjects来等待其变为有信号。

  当一个手动复位的事件对象的状态被置为有信号状态时,该对象状态将一直保持有信号状态,直至明确调用ResetEvent函数将其置为无信号状态。任意数量的等待中线程,以及随后开始等待的线程均会被释放。
  当一个自动复位的事件对象的状态被置为有信号状态时,该对象状态将一直保持有信号状态,直至一个等待线程被释放;系统将自动将此状态置为无信号状态。如果没有等待线程正在等待,事件对象的状态将保持有信号状态。
  对于自动复位的Event对象,PulseEvent仅释放第一个等待该事件的线程,对象状态随后会被设回Unsingled。
  对于手动复位的Event对象,PulseEvent释放所有正在等待该事件的线程,对象状态随后会被设回Unsingled。
  BOOL SetEvent();
  设置事件的状态为有标记,释放任意等待线程。如果事件是手工的,此事件将保持有标记直到调用ResetEvent。这种情况下将释放多个线程,如果事件是自动的,此事件将保持有标记,直到一个线程被释放,系统将设置事件的状态为无标记。如果没有线程在等待,则此事件将保持有标记,直到一个线程被释放。

HANDLE hThread;HANDLE hEvent;DWORD WINAPI ThreadProc1(LPVOID lpParamenter);int main(int argc, char* argv[]){  hEvent = CreateEvent(NULL, TRUE, FALSE, "abc");  hThread = CreateThread(NULL, 0, ThreadProc1, NULL, 0, NULL);  getchar();  PulseEvent(hEvent);  Sleep(1000);  getchar();  SetEvent(hEvent);  Sleep(1000);  ResetEvent(hEvent);  getchar();  PulseEvent(hEvent);  Sleep(1000);  TerminateThread(hThread, 0);  printf("Hello World!\n");  return 0;}DWORD WINAPI ThreadProc1(LPVOID lParamenter){  int iCount = 0;  while(TRUE)  {    WaitForSingleObject(hEvent, INFINITE);    printf("%d\n", iCount++);  }  return 0;}

 

转载地址:http://sssli.baihongyu.com/

你可能感兴趣的文章
C++ 字符串string操作
查看>>
MySQL必知必会 -- 了解SQL和MySQL
查看>>
MySQL必知必会 -- 使用MySQL
查看>>
MySQL必知必会 -- 数据检索
查看>>
MySQL必知必会 -- 排序检索数据 ORDER BY
查看>>
MySQL必知必会 -- 数据过滤
查看>>
MYSQL必知必会 -- 用通配符进行过滤
查看>>
MYSQL必知必会 -- 用正则表达式进行搜索
查看>>
MySQL必知必会 -- 创建计算字段
查看>>
MySQL必知必会 -- 使用数据处理函数
查看>>
MySQL必知必会 -- 数据汇总
查看>>
MySQL必知必会 -- 子查询的使用
查看>>
POJ 3087 解题报告
查看>>
POJ 2536 解题报告
查看>>
POJ 1154 解题报告
查看>>
POJ 1661 解题报告
查看>>
POJ 1101 解题报告
查看>>
ACM POJ catalogues[转载]
查看>>
ACM经历总结[转载]
查看>>
C/C++文件操作[转载]
查看>>