码迷,mamicode.com
首页 > 其他好文 > 详细

lock,Monitor,Mutex的区别

时间:2015-07-06 12:18:37      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:c#   多线程   c#多线程   

网络上有一很多关于这三个的区别。但是个人的实验跟他们写的有一些出入。把个人的理解写出来,供大家拍砖。
http://www.cnblogs.com/bile/archive/2013/01/08/2850712.html
这个文章上写了很多,网络上很多人的转载的。但是个人测试不敢苟同。

lock和Monitor的区别

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

Mutex和其他两者的区别

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

lock,Monitor,Mutex的区别

标签:c#   多线程   c#多线程   

原文地址:http://blog.csdn.net/aofengdaxia/article/details/46771951

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!