`
hunxiejun
  • 浏览: 1145282 次
文章分类
社区版块
存档分类
最新评论

2011-07-27 —— 杂记 —— SetEvent 和 PulseEvent 的区别

 
阅读更多

系统核心对象中的Event事件对象,在进程、线程间同步的时候是比较常用,发现它有两个出发函数,一个是SetEvent,还有一个PulseEvent,两者的区别是:

SetEvent为设置事件对象为有信号状态;而PulseEvent也是将指定的事件设为有信号状态,不同的是如果是一个人工重设事件,正在等候事件的、被挂起的所有线程都会进入活动状态,函数随后将事件设回,并返回;如果是一个自动重设事件,则正在等候事件的、被挂起的单个线程会进入活动状态,事件随后设回无信号,并且函数返回。

也就是说在自动重置模式下PulseEvent和SetEvent的作用没有什么区别,但在手动模式下PulseEvent就有明显的不同,可以比较容易的控制程序是单步走,还是连续走。如果让循环按要求执行一次就用PulseEvent,如果想让循环连续不停的运转就用SetEvent,在要求停止的地方发个ResetEvent就OK了。

-------PulseEvent相当于在自动重置的模式下SetEvent的效果,也就是说它是单次运行,运行后重置!
分享到:
评论

相关推荐

    线程中CreateEvent和SetEvent及WaitForSingleObject的用法

    线程中CreateEvent和SetEvent及WaitForSingleObject的用法

    进程讲通信

    sendmessage, CreateEvent, setEvent,进程通信,通过CreateEvent和setEvent来实现,sendmessage发送消息

    SetEvent and ResetEvent manual

    同一事件变量,调用WaitForSingleObject在不同函数中返回结果不同.

    操作系统课程设计-同步机制-读者写者

    SetEvent() 将手工重置事件转化为已接受信号状态 ResetEvent() 将手工重置事件转化为非接受信号状态 PulseEvent() 将自动重置事件对象转化为已接受信号状态。当系统释放所有的等待它的线程时此种转化立即发生 利用...

    测试WaitForSingleObject

    测试WaitForSingleObject,CreateEvent SetEvent,vs2008实现

    pfc outlook菜单风格应用案列

    2009-02-07:将u_cst_toolbarstripbutton增加实例变量is_event,并增加函数of_setevent(string as_event):is_event=as_event 20090218:在u_cst_tabstrip中增加变量ib_allowClose,用以控制当前tab是否允许关闭(比如...

    MFC实现波形不闪烁动态绘图(使用SETEVENT定时器,误差1毫秒内)

    采用timeSetEvent定时器来计算数据,使用OnTimer定时器来显示图形;数据计算误差不超过1ms。先将图形绘制到内存中,然后显示,不会闪烁不清。面板可以动态设置参数调整波形

    ETAS eta-os demo 源码

    ETAS eta-os demo 源码

    高手window.event对象详解

    window.event对象详解。event对象只在事件发生的过程中才有效;event的某些属性只对特定的事件有意义。比如,fromElement 和 toElement 属性只对 onmouseover 和 onmouseout 事件有意义。

    MFC实例第一篇 流行控件

    界面开发所用到的主要控件,包括命令按钮,组合框,进度条及菜单等.

    silver-request

    .setEvent('Github Loaded') .send(); 正在安装 用纱 yarn add silver-request npm npm install silver-request 运行测试 只需运行 yarn test 用法 方法 类型 默认 描述 setLogger 功能 空值 设置登录功能,例如...

    WinCe嵌入式系统UDP网络通信程序

    网络通信在嵌入式系统中经常会用到,UDP网络通信简单方便被越来越多的应用到工程中。这个程序实现了在嵌入式系统WinCE中的UDP通信通能。...Close函数调用SetEvent(m_ExitThreadEvent)关闭UDP端口。

    timer-manager

    如果计时器的键(自定义事件名称和ID的组合)不存在,则创建一个计时器。 如果存在计时器的密钥,则删除旧的计时器并创建一个新的计时器。 独特的计时器 如果计时器的键不存在,请创建一个计时器。 如果计时器的...

    WinAPI (Delphi版)

    SetEvent SetPriorityClass SetThreadPriority Sleep SuspendThread TerminateProcess TerminateThread TlsAlloc TlsFree TlsGetValue TlsSetValue WaitForInputIdle ...

    VC++事件的使用(常在多线的同步中使用)

    事件的使用实例。主要示例了CreateEvent、SetEvent、ResetEvent、WaitForSingleObject函数的使用。

    c++使用临界区来互斥使用资源,比如多线程

    临界区的互斥控制_SetEvent置句柄为有信号状态配合WaitForSingleObject使用_INFINITE等待其运行结束

    易语言事件状态

    易语言事件状态源码,事件状态,Fun1Proc,FUN2PROC,CreateEvent,CreateThread,Sleep,GetLastError,CloseHandle,SetEvent,WaitForSingleObject

    Vue 监听列表item渲染事件方法

    使用Vue渲染列表是很简单方便的,但如果需要在渲染item的时候去监听事件就无法实现了,楼主我翻遍了Vue的api也没找到合适的方法去解决,其中也提到使用watch和vue.nextClick 监听,但这些都不能实现,苦恼啊,不过...

    动态添加js事件实现代码

    //表单对象 function GetObject(Name) { var inputlist=document.all.tags(‘input’);... } //设置对象事件 function setEvent(Object,EventName,EventFunction) { if(Object ==null) return; if

    UXDC-protofiles:Protobuf .proto文件(用于包括到项目存储库中)

    UXDC原始文件 UXDC_Halo.proto的eCAL主题名称: 遵循``规则''UXDC__ UXDC :: Halo :: HALO_Status发布者...UXDC :: Halo: UXDC_Halo_FadeOut“ UXDC :: Halo :: SetEvent订阅者主题名称:” UXDC_Halo_TriggerEvent

Global site tag (gtag.js) - Google Analytics