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

    xiaoxiao2024-03-29  9

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

    2.3 使用Mutex类

    本节将描述如何使用Mutex类来同步两个单独的程序。Mutex是一种原始的同步方式,其只对一个线程授予对共享资源的独占访问。

    2.3.1 准备工作

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

    2.3.2 实现方式

    请执行以下步骤来了解如何使用Mutex类实现两个单独的程序的同步:

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

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

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

    4.运行程序。

    2.3.3 工作原理

    当主程序启动时,定义了一个指定名称的互斥量,设置initialOwner标志为false。这意味着如果互斥量已经被创建,则允许程序获取该互斥量。如果没有获取到互斥量,程序则简单地显示Running,等待直到按下了任何键,然后释放该互斥量并退出。

    如果再运行同样一个程序,则会在5秒钟内尝试获取互斥量。如果此时在第一个程序中按下了任何键,第二个程序则会开始执行。然而,如果保持等待5秒钟,第二个程序将无法获取到该互斥量。

    请注意具名的互斥量是全局的操作系统对象!请务必正确关闭互斥量。最好是使用using代码块来包裹互斥量对象。

    该方式可用于在不同的程序中同步线程,可被推广到大量的使用场景中。

    相关资源:mdeunlock3.2
    最新回复(0)