zoukankan      html  css  js  c++  java
  • c# Mutex 互斥锁

    前言

    互斥锁(Mutex)

    互斥锁是一个互斥的同步对象,意味着同一时间有且仅有一个线程可以获取它。

    互斥锁可适用于一个共享资源每次只能被一个线程访问的情况。

    正文

    代码:

    static void Main(string[] args)
    {
    	const string MutexName = "CsharpThreadingCookbook";
    	using (var m = new Mutex(false, MutexName))
    	{
    		if (!m.WaitOne(TimeSpan.FromSeconds(5), false))
    		{
    			Console.WriteLine("second instance is running");
    			Console.ReadLine();
    		}
    		else
    		{
    			Console.WriteLine("Runing");
    			Console.ReadLine();
    			m.ReleaseMutex();
    		}
    	}
    }
    

    这里m.WaitOne(TimeSpan.FromSeconds(5), false) 会请求加锁,如果获取后,其他线程就无法WaitOne,陷入一个等待状态。

    m.ReleaseMutex() 是在把相应的操作执行完毕之后就可以释放锁,那么其他线程就可以继续自己的操作。

    Mutex 还挺关键的一个东西,或许补齐其原理,并补充更多的例子。

  • 相关阅读:
    第07组 Alpha冲刺 (2/6)
    第07组Alpha冲刺(1/6)
    第四次作业
    面试题练习
    SpringMVC访问静态资源
    MyBatis基础
    Spring注解和jdk注解
    自动代理生成器
    aspect xml
    Spring-案例
  • 原文地址:https://www.cnblogs.com/aoximin/p/13224997.html
Copyright © 2011-2022 走看看