这个同步线程的类大概是东北的。

很有意思。

会限定你的线程使用的次数,更形象一点的像是你妈,提前准备好你要使用的线程的次数,用不完还不高兴那种的。

使用顺序基本就是

实例化  填充线程的启动次数

使用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的方法来递减的填充数字。

最新文章

  1. HTML5+ 学习笔记3 storage.增删改查
  2. Find the equipment indices
  3. 工作中遇到的问题--实现CustomerSetting的实时更新
  4. Linux环境变量的设置和查看方法
  5. SQL从入门到基础 - 05 数据分组、Having语句
  6. codeforces 665E Beautiful Subarrays
  7. delphi中无类型文件读写
  8. 无法Debug SQL: Unable to start T-SQL Debugging. Could not attach to SQL Server process on
  9. 筛选实现C++实现筛选法
  10. 对VC++6.0爱得深沉(二)个性工具的定制
  11. 版本控制之一:SVN服务器搭建与安装(转)
  12. CMake设置FOLDER失败及解决
  13. .net core使用Pipelines进行消息IO合并
  14. Sql 注入详解:宽字节注入+二次注入
  15. 删除linux下的指定文件
  16. P1896 [SCOI2005]互不侵犯 状压dp
  17. python 定义类 简单使用
  18. IIS------如何安装IIS
  19. Android 自己定义View (四) 视频音量调控
  20. 深入理解Cookie和Session机制

热门文章

  1. thinkphp使用自定义类方法
  2. cocoa 线程操作
  3. python中对 函数 闭包 的理解
  4. Mybatis工具Generator
  5. PHP 取网页变量
  6. DataGridView根据条件给单元格绑定图片
  7. Stall Reservations(贪心+优先队列)
  8. Navigator - BOM对象
  9. codeforce465DIV2——D. Fafa and Ancient Alphabet
  10. [luogu3391] 【模板】文艺平衡树(fhq-treap反转区间)