《C#多线程编程实战(原书第2版)》——2.3 使用Mutex类
2023-09-11 14:16:11 时间
本节书摘来自华章出版社《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指令:
![705b5f4d88a5abe8c14ea6f77e4b6723ffb37888](https://yqfile.alicdn.com/705b5f4d88a5abe8c14ea6f77e4b6723ffb37888.png)
3.在Main方法中加入以下代码片段:
![c9823551f8d5084f7b1764029b07fcc414953dde](https://yqfile.alicdn.com/c9823551f8d5084f7b1764029b07fcc414953dde.png)
4.运行程序。
2.3.3 工作原理当主程序启动时,定义了一个指定名称的互斥量,设置initialOwner标志为false。这意味着如果互斥量已经被创建,则允许程序获取该互斥量。如果没有获取到互斥量,程序则简单地显示Running,等待直到按下了任何键,然后释放该互斥量并退出。
如果再运行同样一个程序,则会在5秒钟内尝试获取互斥量。如果此时在第一个程序中按下了任何键,第二个程序则会开始执行。然而,如果保持等待5秒钟,第二个程序将无法获取到该互斥量。
请注意具名的互斥量是全局的操作系统对象!请务必正确关闭互斥量。最好是使用using代码块来包裹互斥量对象。该方式可用于在不同的程序中同步线程,可被推广到大量的使用场景中。
多线程编程学习四(Lock 的使用) 一、前言 本文要介绍使用Java5中 Lock 对象,同样也能实现同步的效果,而且在使用上更加方便、灵活,主要包括 ReentrantLock 类的使用和ReentrantReadWriteLock 类的使用。
相关文章
- C#多线程
- c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询
- 反爬虫:利用ASP.NET MVC的Filter和缓存(入坑出坑) C#中缓存的使用 C#操作redis WPF 控件库——可拖动选项卡的TabControl 【Bootstrap系列】详解Bootstrap-table AutoFac event 和delegate的分别 常见的异步方式async 和 await C# Task用法 c#源码的执行过程
- 利用反射快速给Model实体赋值 使用 Task 简化异步编程 Guid ToString 格式知多少?(GUID 格式) Parallel Programming-实现并行操作的流水线(生产者、消费者) c# 无损高质量压缩图片代码 8种主要排序算法的C#实现 (一) 8种主要排序算法的C#实现 (二)
- c# 把一个匿名对象赋值给一个Object类型的变量后,怎么取这个变量? c# dynamic动态类型和匿名类 详解C# 匿名对象(匿名类型)、var、动态类型 dynamic 深入浅析C#中的var和dynamic
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
- c# .net 的async和await 异步编程(多线程编程) 在不同场景下的使用解析
- 《C#多线程编程实战(原书第2版)》——第1章 线 程 基 础 1.1 简介
- 《C#多线程编程实战(原书第2版)》——1.9 向线程传递参数
- 《C#多线程编程实战(原书第2版)》——1.12 处理异常
- 《C#多线程编程实战(原书第2版)》——第2章 线 程 同 步 2.1 简介
- 《C#多线程编程实战(原书第2版)》——2.10 使用SpinWait类
- 《C#多线程编程实战(原书第2版)》——第3章 使用线程池 3.1 简介
- 《C#多线程编程实战(原书第2版)》——3.3 向线程池中放入异步操作
- c# Task多线程并行任务中等待所有线程都执行完成
- 5天玩转C#并行和多线程编程 —— 第四天 Task进阶
- 在调整移位C# 工程中时引用会出全部现感叹号的解决方法
- C#保存CookieContainer到文件
- C#多线程编程之:Monitor使用示例及Mutex简介
- 5天玩转C#并行和多线程编程 —— 第三天 认识和使用Task