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

    xiaoxiao2024-03-06  119

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

    2.8 使用Barrier类

    本节将展示另一种有意思的同步方式,被称为Barrier。Barrier类用于组织多个线程及时在某个时刻碰面。其提供了一个回调函数,每次线程调用了SignalAndWait方法后该回调函数会被执行。

    2.8.1 准备工作

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

    2.8.2 实现方式

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

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

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

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

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

    5.运行程序。

    2.8.3 工作原理

    我们创建了Barrier类,指定了我们想要同步两个线程。在两个线程中的任何一个调用了_barrier.SignalAndWait方法后,会执行一个回调函数来打印出阶段。

    每个线程将向Barrier发送两次信号,所以会有两个阶段。每次这两个线程调用Signal-AndWait方法时,Barrier将执行回调函数。这在多线程迭代运算中非常有用,可以在每个迭代结束前执行一些计算。当最后一个线程调用SignalAndWait方法时可以在迭代结束时进行交互。

    相关资源:c#多线程编程实战(原书第二版)源码
    最新回复(0)