zoukankan      html  css  js  c++  java
  • 线程三(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");

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

  • 相关阅读:
    Qt之镜像旋转
    Qt之QCheckBox
    Qt之动画框架
    Qt之QFileSystemWatcher
    Qt之qSetMessagePattern
    Qt之qInstallMessageHandler(重定向至文件)
    Qt之qInstallMessageHandler(输出详细日志)
    Qt之窗体透明
    Qt之窗体拖拽、自适应分辨率、自适应大小
    Qt之设置应用程序图标
  • 原文地址:https://www.cnblogs.com/lu-yuan/p/11377745.html
Copyright © 2011-2022 走看看