C#线程中的等待与阻塞
来源:互联网 发布:厦门网络推广cnmxcm 编辑:程序博客网 时间:2024/05/22 13:55
在C#多个线程运行的过程中,会遇到先运行哪个线程和后运行哪个线程的问题,这需要用到ManualResetEvent类。
ManualResetEvent类允许不同线程通过互发信号和等待彼此的信号来达到线程同步的目的。
它有三个重要的方法:Reset、Set和WaitOne。
首先要初始化一个ManualResetEvent类,可定义如下:
private ManaulResetEvent allDone=new ManaulResetEvent(false);
我们会看到在初始化时,有一个false参数,这是什么意思呢?它的意思是:初始化allDone为非终止状态,当有线程调用allDone.WaitOne()方法时,该线程将进入阻塞状态。
如果将false改为true,则会初始化allDone为终止状态,当有线程调用allDone.WaitOne()方法时,该线程可以继续执行后面的操作。
再说一下Reset方法,它会将ManualResetEvent类的对象(此处为allDone)设置为非终止状态,告诉调用allDone.WaitOne()方法的线程:此处将阻塞线程。
Set方法与Reset相反,当有线程调用allDone.Set()方法时,它会告诉包含allDone.WaitOne()方法的线程:此处改为了终止状态,程序可以继续运行了。
- C#线程中的等待与阻塞
- 线程中的等待与唤醒
- jconsole线程面板中的阻塞总数和等待总数
- JAVA中的多线程操作 线程等待、阻塞、让步等
- JAVA中的多线程操作:线程等待、阻塞、让步
- JAVA中的多线程操作。线程等待、阻塞、让步,挂起 等
- Java线程之二 锁定与等待阻塞原理图
- C#线程阻塞、中断与终止
- boost::asio阻塞等待与异步等待
- Linux设备驱动中的阻塞与非阻塞I/O 及 等待队列的使用说明
- Linux驱动中的阻塞与非阻塞I/O,等待队列,轮询操作
- C#线程等待句柄
- Linux阻塞等待线程启动示例
- waitFor()一直等待,线程阻塞问题
- 线程等待与唤醒
- 线程创建与等待
- java中的阻塞线程
- linux中的阻塞机制及等待队列
- 销售人员如何打电话?
- Linux -- Chapter 11 进程与信号
- 黑马程序员 java中的构造代码块
- Linux中的文件权限
- Python进阶03 模块
- C#线程中的等待与阻塞
- struct和typedef struct
- 【Linux基础】不带缓存的IO操作
- C语言预处理的方式总结
- Android里XML文件使用
- Python进阶04 函数的参数对应
- linux网络编程之socket(十五):UNIX域套接字编程和socketpair 函数
- Android中如何使用命令行查看内嵌数据库sqlite3
- 如何看待兼容性