线程三(Mutex)
C# 中 Mutex 类也是用于线程同步操作的类,例如,当多个线程同时访问一个资源时保证一次只能有一个线程访问资源。
在 Mutex 类中,WaitOne() 方法用于等待资源被释放, ReleaseMutex() 方法用于释放资源。
WaitOne() 方法在等待 ReleaseMutex() 方法执行后才会结束。
【实例】使用线程互斥实现每个车位每次只能停一辆车的功能。
private static Mutex mutex = new Mutex();
public static void Parking(object num)
{
if (mutex.WaitOne())
{
try
{
Console.WriteLine("车牌号{0}的车驶入!", num);
Thread.Sleep(1000);
}
finally
{
Console.WriteLine("车牌号{0}的车离开!", num);
mutex.ReleaseMutex();
}
}
}
ParameterizedThreadStart ts = new ParameterizedThreadStart(Parking);
Thread t1 = new Thread(ts);
t1.Start("冀A12345");
Thread t2 = new Thread(ts);
t2.Start("京A00000");
每辆车驶入并离开后其他车才能占用停车位,即当一个线程占用资源时,其他线程是不使用该资源的。
最新文章
- GJM : Unity3D HIAR -【 快速入门 】 二、搭建开发环境
- CCProxy二级代理上网设置
- android 数据存储Ⅰ
- 《Inside UE4》-1-基础概念
- Lattice 的 Framebuffer IP核使用调试笔记之IP核生成与参数设置
- Revit中如何自定义快捷键
- C++中析构函数的作用,
- Java 网络编程(三) 创建和使用URL访问网络上的资源
- Spring Boot与分布式
- setParameter不支持传统的按位置查询方式
- Chapter 5 Blood Type——31
- BZOJ.4942.[NOI2017]整数(分块)
- spring activemq 整合
- python 利用selectors实现异步I/O
- 《CSAPP》符号解析
- 使用SQL语句创建数据库1——创建一个数据库文件和一个日志文件的数据库
- Magento2 php商城在windows10上安装
- 大数据入门第二十三天——SparkSQL(一)入门与使用
- 使用createprocess()创建进程打开其他文件方法
- linux-ububtu64位安装docker,及基本命令
热门文章
- openresty开发系列24--openresty中lua的引入及使用
- python的url正则表达式
- 从Windows转mac遇到的一些坑
- VMware Workstation 将虚拟机挂起后,电脑会很卡,SCSI转换成IDE就可以了
- Python - Django - 在 CBV 中使用装饰器
- layer实现鼠标悬浮效果
- yarn那些事儿
- JS扩展Array.prototype引发的问题及解决方法
- ASP.net发布项目引用了C++DLL后页面提示找不到指定模块的异常
- Vue + ElementUI的电商管理系统实例01 登录表单