本节书摘来自华章出版社《c#多线程编程实战(原书第2版)》一书中的第2章,第2.3节,作者(美)易格恩·阿格佛温(eugene agafonov),黄博文 黄辉兰 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
本节将描述如何使用mutex类来同步两个单独的程序。mutex是一种原始的同步方式,其只对一个线程授予对共享资源的独占访问。
为了学习本节,你需要安装visual studio 2015。除此之外无需其他准备。本节的源代码放置在booksampleschapter2recipe2目录中。
请执行以下步骤来了解如何使用mutex类实现两个单独的程序的同步:
1.启动visual studio 2015。新建一个c#控制台应用程序项目。
2.在program.cs文件中加入以下using指令:

3.在main方法中加入以下代码片段:
4.运行程序。
当主程序启动时,定义了一个指定名称的互斥量,设置initialowner标志为false。这意味着如果互斥量已经被创建,则允许程序获取该互斥量。如果没有获取到互斥量,程序则简单地显示running,等待直到按下了任何键,然后释放该互斥量并退出。
如果再运行同样一个程序,则会在5秒钟内尝试获取互斥量。如果此时在第一个程序中按下了任何键,第二个程序则会开始执行。然而,如果保持等待5秒钟,第二个程序将无法获取到该互斥量。
该方式可用于在不同的程序中同步线程,可被推广到大量的使用场景中。