事件(Event)是WIN32提供的最灵活的线程间同步方式,事件可以处于激发状态(signaled or true)或未激发状态(unsignal or false)。根据状态变迁方式的不同,事件可分为两类:

  (1)手动设置:这种对象只可能用程序手动设置,在需要该事件或者事件发生时,采用SetEvent及ResetEvent来进行设置。(2)自动恢复:一旦事件发生并被处理后,自动恢复到没有事件状态,不需要再次设置。参数1:SECURITY_ATTRIBUTES结构指针,可为NULL参数2:// 手动/自动// TRUE:在WaitForSingleObject后必须手动调用ResetEvent清除信号// FALSE:在WaitForSingleObject后,系统自动清除事件信号参数3://初始状态,是否发信号  ,false不发信号,true,发信号(返回值WaitForSingleObject(h_event1, 300)=WAIT_OBJECT_0)参数4://事件的名称CreateEvent(NULL, true, false, _T("event_one"));

参考https://blog.csdn.net/LL596214569/article/details/89163734

简单得用法,SetEvent可以控制线程是否继续执行,或者卡死多少秒

使用CreateEvent,创建,WaitForSingleObject 方法卡死,

程序如下,如果输入0,SetEvent(h_event1);继续执行,

输入1,卡死在程序中WaitForSingleObject ,等待3秒,执行一下继续卡死

代码如下:


#include <iostream>
#include <string>
#include <windows.h>
#include <tchar.h>
using namespace std;HANDLE h_event1 = NULL;
DWORD WINAPI FunProc1(LPVOID lpParameter);DWORD WINAPI FunProc1(LPVOID lpParameter)
{cout << "线程1开始运行。\n" << endl;while (true) {while (WAIT_TIMEOUT == WaitForSingleObject(h_event1, 3000)){cout << "线程1event1等待超时\n" << endl;Sleep(500);}cout << "线程1等到了event1,线程1结束。\n" << endl;Sleep(500);}return 0;
}int main(int argc, char** argv)
{/* 事件(Event)是WIN32提供的最灵活的线程间同步方式,事件可以处于激发状态(signaled or true)或未激发状态(unsignal or false)。根据状态变迁方式的不同,事件可分为两类:(1)手动设置:这种对象只可能用程序手动设置,在需要该事件或者事件发生时,采用SetEvent及ResetEvent来进行设置。(2)自动恢复:一旦事件发生并被处理后,自动恢复到没有事件状态,不需要再次设置。参数1:SECURITY_ATTRIBUTES结构指针,可为NULL参数2:// 手动/自动// TRUE:在WaitForSingleObject后必须手动调用ResetEvent清除信号// FALSE:在WaitForSingleObject后,系统自动清除事件信号参数3://初始状态,是否发信号  ,false不发信号,true,发信号(返回值WaitForSingleObject(h_event1, 300)=WAIT_OBJECT_0)参数4://事件的名称*/h_event1 = CreateEvent(NULL, true, true, _T("event_one"));HANDLE hThread1;hThread1 = CreateThread(NULL, 0, FunProc1, NULL, 0, NULL);string  a = "";while (true) {cin >> a;if (a == "1") {ResetEvent(h_event1);}else {SetEvent(h_event1);}}CloseHandle(hThread1);CloseHandle(h_event1);system("pause");}

SetEvent与ResetEvent相关推荐

  1. c++中SetEvent和ResetEvent的使用

    关于事件 事件(Event)是WIN32提供的最灵活的线程间同步方式,事件可以处于激发状态(signaled or true)或未激发状态(unsignal or false).根据状态变迁方式的不同 ...

  2. Windows编程之CreateEvent,WaitForSingleObject,SetEvent,ResetEvent函数

    一 Windows编程之CreateEvent,WaitForSingleObject,SetEvent,ResetEvent函数 1 CreateEvent HANDLE WINAPI Create ...

  3. SetEvent()和ResetEvent()

    一.综述: SetEvent()使当前事件对象处于有信号状态,当前的这个线程可以继续执行. ResetEvent()是当前事件对象处于无信号状态,当前的线程处于睡眠状态,不能执行. 设置为TRUE就是 ...

  4. windows线程 事件CreateEvent、SetEvent、ResetEvent、CloseHandle

    事件 相关问题 程序之前的通知的问题 事件的使用 1.创建事件 HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes,//事件安全属性 ...

  5. 线程中CreateEvent和SetEvent和ReSetEvent及WaitForSingleObject的用法

    概述 首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,程锁定方面. CreateEvent:创建或打开一个命名的或无名的事件对象. EVENT有两种状态:发信号 ...

  6. SetEvent,ResetEvent

    BOOL CEvent::SetEvent(); 将 CEvent 类对象的状态设置为有信号状态.如果事件是人工事件,则 CEvent 类对象保持为有信号状态,直到调用成员函数ResetEvent() ...

  7. CreateEvent、SetEvent、ResetEvent和WaitForSingleObject

    事件对象就像一个开关:它只有两种状态---开和关.当一个事件处于"开"状态,我们称其为"有信号",否则称为"无信号".可以在一个线程的执行函 ...

  8. C++事件的建立和使用SetEvent,ResetEvent

    一.事件是很常用的多线程同步互斥机制 函数原型如下所示,一共四个参数: HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, // ...

  9. C++信号量实现线程间同步,windows使用SetEvent,linux使用sem_t,QT测试

    目录 windows使用CreateEvent.SetEvent.ResetEvent.WaitForSingleObject linux使用sem_init.sem_wait.sem_trywait ...

最新文章

  1. 版权之争,谁更棋高一着?
  2. C#只能lock 引用类型的值 (转载)
  3. c语言小游戏 精简_一个简易的贪吃蛇小游戏C语言源码
  4. vml的简易画板_2
  5. 为什么我不用ViewPager或RecyclerView来做上下滑切换
  6. Treejs+EasyUI+Vuejs实操
  7. 国内几大主流论坛(bbs)系统
  8. 声网 视频通话SDK小结
  9. Kubernetes核心概念总结
  10. Python机器视觉--OpenCV进阶(核心)-边缘检测之SIFT关键点检测
  11. php实现用百度ip地址查询接口查询ip归属地
  12. java 拒绝访问_JAVA编译中拒绝访问的问题及解决方案
  13. vue电商后台管理系统--订单管理篇
  14. canvas下雪效果(原生js)
  15. 上计会青少年算法竞赛3月月赛
  16. 面向大规模数据的云端管理,百度沧海存储产品解析
  17. Python使用pyinstaller打包成exe文件,并支持传入外部参(已解决打包后文件大的情况)
  18. 爱德泰科普 | 一文了解如何整理机柜内的光纤跳线
  19. 神经网络输入图片大小,神经网络 图像相似度
  20. 【数分书单】分析思维《一本小小的蓝色逻辑书》第一/二章小结

热门文章

  1. 中国口腔清洁用品市场竞争渠道与产销需求调研报告2022版
  2. android 广播单词锁屏,单词锁屏 - 抓住每一次解锁 - Android 应用 - 【最美应用】...
  3. Mac视频剪辑三件套Final Cut Pro X 10.6.3+ Motion 5.6.1+Compressor 4.6.1安装教程
  4. pdf怎么转换成jpg格式欣赏
  5. 知识工程重点知识介绍-2
  6. 六维力传感器的温度特性和温度补偿
  7. 亚马逊云计算AWS简单使用总结
  8. 【城市污水处理过程中典型异常工况智能识别】(基于迁移学习,拓扑结构卷积神经网络的污水异常工况识别)
  9. 【GoCN酷Go推荐】Golang 图片处理 — image 库
  10. Linux中数据库备份和恢复