zoukankan      html  css  js  c++  java
  • ManualResetEvent,AutoResetEvent说明

    相信不少人对ManualResetEvent,AutoResetEvent的状态比较晕,下面是本人认为最精简的理解

    1.只有2种状态,终止态 And 非终止态

    终止状态,既然是状态那么一定对应事物,这里的物指的就是线程了而事则指该线程上执行的某段代码, 某线程调用Set,就表明该线程的某段代码执行完毕,以通知其他等待的线程执行,所以这里终止不能理解成线程终止,事实上调用Set的线程可以继续执行后面的代码。 调用Set或Reset的线程叫控制线程--人家既然可以执行到Set或Reset那么就表名某个线程是活动的并且执行了该代码。

    总结上面的话: "终止状态"指的是控制线程的某个事务(代码)执行完毕.


    终止态:调用ManualResetEvent.Set() 达到,意义--调用线程需要优先或独立执行的任务完成了,其他调用了WaitOne的线程可以进行了.
    非终止态:调用ManualResetEvent.Reset()达到,意义--调用线程还在执行需要优先或独立执行的任务,其他调用了WaitOne的线程需要等待。

    构造函数参数true或false来指定初始状态,true为终止态,fasle为非终止态

    2.AutoResetEvent 与ManualResetEvent类似,但是AutoResetEvent 设置成终止后,如果某个WaitOne调用被放行后,会自动变成非终止状态以继续阻塞其他调用了WaitOne线程执行

    3. x.WaitOne(0, false)  由于设置了超时时间为0,所以不会阻塞当前调用线程,在x为终止态时返回True,在x为非终止态时返回false
      

  • 相关阅读:
    一个应用程序无法启动错误的解决过程
    C#调用C库的注意事项
    STM32硬件调试详解
    CP2102模块介绍(USB转uart)
    CH340在STM32实现一键下载电路
    LM27313升压转换器
    常用贴片电阻、电容、电感封装
    MAX16054
    在51系列中data,idata,xdata,pdata的区别
    用UGN3503霍尔器件制作的数字指南针_电路图
  • 原文地址:https://www.cnblogs.com/wdfrog/p/3422942.html
Copyright © 2011-2022 走看看