zoukankan      html  css  js  c++  java
  • 灵活使用多线程编程——AutoResetEvent类

    AutoResetEvent类

         该类的作用是通知正在等待的线程已发生的事件。该类存在于mscorlib.DLL中。

         在.Net Framework 2.0中,该类是继承自EventWaitHalder,AutoResetEvent在功效上等同于EventResetModel.AutoReset创建的EventWaitHandle。下面我们反编译该类的代码,下边为该类得构造函数的代码:

    Code

    AutoResetEvent是允许线程通过发信号进行互相通信访问的。通常,此类通信涉及线程需要独占访问资源。

    线程通过调用AutoResetEvent上的WaitOne来等待信号,如果AutoResetEvent处于非终止状态的话,则该线程阻塞,并且等待当前控制资源的线程通过调用Set发出资源可用信号。

    调用Set向AutoResetEvent发出信号以释放等待的线程,AutoResetEvent将处于终止状态,直到一个等待的线程释放,然后自动返回非终止状态,如果没有任何线程在等待,则该信号无限期的保持在终止状态。

    可以通过将一个Bool值传给AutoResetEvent的构造函数,用于设置是否为非终止状态。如果传入的为TRUE,则初始状态为终止状态,否则为FALSE。

    下面我们通过一个示例来详细说明该类的用法:

    Code

    AutoResetEvent中比较有用的函数分别为以下几个:

         1.Set()  将事件的状态位置设置为终止状态,允许一个或多个等待线程继续。

         2.ReSet()将事件的状态设置为非终止状态,阻塞该线程。

         3.WaitOne()阻止当前线程。直到当前WaitHandle收到信号。

  • 相关阅读:
    [转]三维曲线投影到坐标轴
    [转]python matplotlib contour画等高线图
    [转]python (matplotlib)画三维图像
    excel挑选出每一行的最大值或最小值
    Origin 三种方法在图片中添加水平辅助线
    Origin画放大部分区域图片
    Origin画3DScatter图-第一节
    JFreechart绘制2D散点图
    Ctex入门指南笔记 -列表、表格、公式与图片
    Ctex安装与运行
  • 原文地址:https://www.cnblogs.com/yangyang8848/p/1402622.html
Copyright © 2011-2022 走看看