zl程序教程

您现在的位置是:首页 >  后端

当前栏目

《C#多线程编程实战(原书第2版)》——2.7 使用CountDownEvent类

c#多线程编程 实战 原书 2.7 使用
2023-09-11 14:16:11 时间

本节书摘来自华章出版社《C#多线程编程实战(原书第2版)》一书中的第2章,第2.7节,作者(美)易格恩·阿格佛温(Eugene Agafonov),黄博文 黄辉兰 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.7 使用CountDownEvent类

本节将描述如何使用CountdownEvent信号类来等待直到一定数量的操作完成。

2.7.1 准备工作

为了学习本节,你需要安装Visual Studio 2015。除此之外无需其他准备。本节的源代码放置在BookSamplesChapter2Recipe6目录中。

2.7.2 实现方式

请执行以下步骤来了解CountDownEvent类的使用:

1.启动Visual Studio 2015。新建一个C#控制台应用程序项目。

2.在Program.cs文件中加入以下using指令:


cd3b121c82112023c94dbfebec1a74aee8ade2f6

3.在Main方法下面加入以下代码片段:


bf30f697ba8770f5e51453e46e3c78637bcfaad0

230d95a06350f2a4cef097de1dff67443e583597

4.在Main方法中加入以下代码片段:


2457eb43883ceb0ab125208995891c03e8b14a9a

5.运行程序。

2.7.3 工作原理

当主程序启动时,创建了一个CountdownEvent实例,在其构造函数中指定了当两个操作完成时会发出信号。然后我们启动了两个线程,当它们执行完成后会发出信号。一旦第二个线程完成,主线程会从等待CountdownEvent的状态中返回并继续执行。针对需要等待多个异步操作完成的情形,使用该方式是非常便利的。

然而这有一个重大的缺点。如果调用_countdown.Signal()没达到指定的次数,那么_countdown.Wait()将一直等待。请确保使用CountdownEvent时,所有线程完成后都要调用Signal方法。


「Java并发编程实战」之对象的共享 本系列博客是对《Java并发编程实战》的一点总结,本篇主要讲解以下几个内容,内容会比较枯燥。可能大家看标题不能能直观的感受出到底什么意思,这就是专业术语,哈哈,解释下,术语(terminology)是在特定学科领域用来表示概念的称谓的集合,在我国又称为名词或科技名词(不同于语法学中的名词)。术语是通过语音或文字来表达或限定科学概念的约定性语言符号,是思想和认识交流的工具。我就用白话文来给大家解释下这些术语。
《C#多线程编程实战(原书第2版)》——2.4 使用SemaphoreSlim类 本节书摘来自华章出版社《C#多线程编程实战(原书第2版)》一书中的第2章,第2.4节,作者(美)易格恩·阿格佛温(Eugene Agafonov),黄博文 黄辉兰 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。