lock,Monitor,Mutex的区别

Posted fanfan-90

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lock,Monitor,Mutex的区别相关的知识,希望对你有一定的参考价值。

lock和Monitor的区别

  • lock的底层本身是Monitor来实现的,所以Monitor可以实现lock的所有功能。
  • Monitor有TryEnter的功能,可以防止出现死锁的问题,lock没有。

 

Mutex和其他两者的区别

Mutex本身可以实现lock和Monitor所有的操作。
但是Mutex是内核级别的,消耗较大的资源,不适合频繁的操作,会降低操作的效率。所以一般被调用部分的资源锁,常常用lock或者Monitor,可以提高效率。而线程和线程间的协调,可以用Mutex,因为相互互斥切换的机会会大大的降低,效率就不再那么的重要了。
Mutex本身是可以系统级别的,所以是可以跨越进程的。比如我们要实现一个软件不能同时打开两次,那么Mutex是可以实现的,而lock和monitor是无法实现的。

static Mutex mutex = new Mutex();
{
mutex.WaitOne();
Console.WriteLine(num2++);
mutex.ReleaseMutex();
}

 

 

以上是关于lock,Monitor,Mutex的区别的主要内容,如果未能解决你的问题,请参考以下文章

C#各种同步方法 lock, Monitor,Mutex, Semaphore, Interlocked, ReaderWriterLock,AutoResetEvent, ManualResetEv

锁和互斥锁有啥区别?

pthread_join 和 pthread_mutex_lock 有啥区别?

std::mutex 锁定函数和 std::lock_guard<std::mutex> 的区别?

线程基础四 使用Monitor类锁定资源

一文看懂 Mutex vs Semaphore vs Monitor vs SemaphoreSlim