《C#多线程编程实战》2.7 CountDownEvent
2024-09-02 13:09:07
这个同步线程的类大概是东北的。
很有意思。
会限定你的线程使用的次数,更形象一点的像是你妈,提前准备好你要使用的线程的次数,用不完还不高兴那种的。
使用顺序基本就是
实例化 填充线程的启动次数
使用Signal() 来递减启动次数
Wait() 会阻止当前线程,这个是当所有的实例化时所填充的启动次数全部结束才会释放线程。
最后是Dispose来释放线程。
class Program
{
static CountdownEvent countdown = new CountdownEvent(); static void Ptest(string message, int seconds)
{
Thread.Sleep(TimeSpan.FromSeconds(seconds));
Console.WriteLine(message);
countdown.Signal();
} static void Main(string[] args)
{
Console.WriteLine("Starting two operations");
var t1 = new Thread(() => Ptest("Operatopm 1 is copletad", ));
var t2 = new Thread(() => Ptest("Operatopm is copletad", ));
t1.Start();
t2.Start();
countdown.Wait();
Console.WriteLine("both operations have been completad");
countdown.Dispose();
Console.ReadKey();
}
}
不得不说Thead的线程同步方式真的是很多啊。
侧重点也有很多不同。
但基本的使用方式无异乎
等待,释放,设置等待这三点。
有点像是排队银行取钱,一切都要按顺序来。如果强队就是出错了,保安会报警的。
还有的是CountdownEvent的结束标志就是实例化的时候所填充的次数必须是全部结束了。值得注意!
也就是每一次方法结束时都要使用CountdownEvent的Singal的方法来递减的填充数字。
最新文章
- HTML5+ 学习笔记3 storage.增删改查
- Find the equipment indices
- 工作中遇到的问题--实现CustomerSetting的实时更新
- Linux环境变量的设置和查看方法
- SQL从入门到基础 - 05 数据分组、Having语句
- codeforces 665E Beautiful Subarrays
- delphi中无类型文件读写
- 无法Debug SQL: Unable to start T-SQL Debugging. Could not attach to SQL Server process on
- 筛选实现C++实现筛选法
- 对VC++6.0爱得深沉(二)个性工具的定制
- 版本控制之一:SVN服务器搭建与安装(转)
- CMake设置FOLDER失败及解决
- .net core使用Pipelines进行消息IO合并
- Sql 注入详解:宽字节注入+二次注入
- 删除linux下的指定文件
- P1896 [SCOI2005]互不侵犯 状压dp
- python 定义类 简单使用
- IIS------如何安装IIS
- Android 自己定义View (四) 视频音量调控
- 深入理解Cookie和Session机制