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");

  每辆车驶入并离开后其他车才能占用停车位,即当一个线程占用资源时,其他线程是不使用该资源的。

最新文章

  1. GJM : Unity3D HIAR -【 快速入门 】 二、搭建开发环境
  2. CCProxy二级代理上网设置
  3. android 数据存储Ⅰ
  4. 《Inside UE4》-1-基础概念
  5. Lattice 的 Framebuffer IP核使用调试笔记之IP核生成与参数设置
  6. Revit中如何自定义快捷键
  7. C++中析构函数的作用,
  8. Java 网络编程(三) 创建和使用URL访问网络上的资源
  9. Spring Boot与分布式
  10. setParameter不支持传统的按位置查询方式
  11. Chapter 5 Blood Type——31
  12. BZOJ.4942.[NOI2017]整数(分块)
  13. spring activemq 整合
  14. python 利用selectors实现异步I/O
  15. 《CSAPP》符号解析
  16. 使用SQL语句创建数据库1——创建一个数据库文件和一个日志文件的数据库
  17. Magento2 php商城在windows10上安装
  18. 大数据入门第二十三天——SparkSQL(一)入门与使用
  19. 使用createprocess()创建进程打开其他文件方法
  20. linux-ububtu64位安装docker,及基本命令

热门文章

  1. openresty开发系列24--openresty中lua的引入及使用
  2. python的url正则表达式
  3. 从Windows转mac遇到的一些坑
  4. VMware Workstation 将虚拟机挂起后,电脑会很卡,SCSI转换成IDE就可以了
  5. Python - Django - 在 CBV 中使用装饰器
  6. layer实现鼠标悬浮效果
  7. yarn那些事儿
  8. JS扩展Array.prototype引发的问题及解决方法
  9. ASP.net发布项目引用了C++DLL后页面提示找不到指定模块的异常
  10. Vue + ElementUI的电商管理系统实例01 登录表单