当前位置: 首页 > news >正文

《C#多线程编程实战》2.7 CountDownEvent

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

很有意思。

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

使用顺序基本就是

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

使用Signal()  来递减启动次数

Wait()    会阻止当前线程,这个是当所有的实例化时所填充的启动次数全部结束才会释放线程。

最后是Dispose来释放线程。

 class Program
    {
        static CountdownEvent countdown = new CountdownEvent(2);

        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", 4));
            var t2 = new Thread(() => Ptest("Operatopm  is copletad", 8));
            t1.Start();
            t2.Start();
            countdown.Wait();
            Console.WriteLine("both operations have been completad");
            countdown.Dispose();
            Console.ReadKey();
        }
    }

不得不说Thead的线程同步方式真的是很多啊。

侧重点也有很多不同。

但基本的使用方式无异乎

等待,释放,设置等待这三点。

有点像是排队银行取钱,一切都要按顺序来。如果强队就是出错了,保安会报警的。

还有的是CountdownEvent的结束标志就是实例化的时候所填充的次数必须是全部结束了。值得注意!

也就是每一次方法结束时都要使用CountdownEvent的Singal的方法来递减的填充数字。

转载于:https://www.cnblogs.com/T-ARF/p/9398002.html

相关文章:

  • linux下安装Bugzilla(二)
  • 2018-8-1 列表的增删改查及元组的基本操作
  • linux下安装Bugzilla(三)
  • mysql sql优化的一些总结
  • linux下安装Bugzilla(四)
  • Centos7 下安装配置tomcat7
  • 【iOS-Cocos2d游戏开发】使用plist文件制作简单精灵
  • linux awk详解
  • HDU 2680 Choose the best route(多起点单终点最短路问题)题解
  • 【iOS-Cocos2d游戏开发】使用Zwoptex生成plist文件
  • 初始Windows系统
  • 西方酒馆(一)
  • Nodejs----基本数据类型
  • Objective-C属性介绍
  • PAT 1061 判断题(15)(代码)
  • avalon2.2的VM生成过程
  • canvas 高仿 Apple Watch 表盘
  • Spark RDD学习: aggregate函数
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • Spring声明式事务管理之一:五大属性分析
  • vue.js框架原理浅析
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 关于 Cirru Editor 存储格式
  • 聊一聊前端的监控
  • 数据结构java版之冒泡排序及优化
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 从如何停掉 Promise 链说起
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​TypeScript都不会用,也敢说会前端?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • $().each和$.each的区别
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (windows2012共享文件夹和防火墙设置
  • (ZT)一个美国文科博士的YardLife
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (三)uboot源码分析
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (转)jQuery 基础
  • *** 2003
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .NET gRPC 和RESTful简单对比
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .NET文档生成工具ADB使用图文教程
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [1159]adb判断手机屏幕状态并点亮屏幕
  • [Android Pro] AndroidX重构和映射
  • [Android]常见的数据传递方式