Mutex和monitor的区别 mutex lock 区别

Monitor和Lock多用于锁定被调用端,而Mutex则多用锁定调用端。

Framework中已经为我们提供了三个加锁的机制,分别是Monitor类、Lock关键字和Mutex类。其中Lock关键词用法比较简单,Monitor类和Lock的用法差不多。这两个都是锁定数据或是锁定被调用的函数。而Mutex则多用于锁定多线程间的同步调用。简单的说,Monitor和Lock多用于锁定被调用端,而Mutex则多用锁定调用端。

lock (this)
{ //Do something
}
或者是用Monitor也是一样的,如下:
Monitor.Enter(this);
Mutex和monitor的区别 mutex lock 区别
//Do something
Monitor.Exit(this); (Monitor的好处是可以用TryEnter(this,timeout))
这就是锁定被调用函数的特性,即只能保证每次被一个线程调用,这就是所谓的强占式。同一时间只能有同一Thread Lock代码块(这里是this),其他Thread执行到此代码块去要等待占用的Threadrelease代码块。需要注意的是,本Thread是可以多次Lock代码块的。

Mutex:

mutex.WaitOne();
//Do something
mutex.ReleaseMutex();
Mutex只能互斥线程间的调用,但是不能互斥本线程的重复调用,即thread1中waitOne()只对thread2中的waitOne()起到互斥的作用,但是thread1并不受本wainOne()的影响,可以调用多次,只是在调用结束后调用相同次数的ReleaseMutex()就可以了。

互斥体Mutex和事件对象EventWaitHandler属于内核对象,利用内核对象进行线程同步,线程必须要在用户模式和内核模式间切换,所以一般效率很低,但利用互斥对象和事件对象这样的内核对象,可以在多个进程中的各个线程间进行同步。

互斥体Mutex类似于一个接力棒,拿到接力棒的线程才可以开始跑,当然接力棒一次只属于一个线程(ThreadAffinity),如果这个线程不释放接力棒(Mutex.ReleaseMutex),那么没办法,其他所有需要接力棒运行的线程都知道能等着看热闹。

Mutex是一个令牌,当一个线程拿到这个令牌时运行,另外想拿到令牌的线程就必须等待,直到拿到令牌的线程释放令牌。没有所有权的线程是无法释放令牌的。

Mutex(false,”string”)中的string是令牌的关键,或者可以叫令牌名,因为Mutex是跨进程的,整个系统中只会有唯一的令牌存在所以,也就是说你在一个应用程序中的一个线程中得到了Mutex的所有权,那在另外一个线程中的另外的线程想得到他就必须要等待。

http://www.cnblogs.com/city22/archive/2007/02/02/638260.html

  

爱华网本文地址 » http://www.aihuau.com/a/25101013/184825.html

更多阅读

批量授权、零售版和OEM的区别 oem授权书

批量授权、零售版和OEM的区别——简介批量授权、零售版和OEM的区别当涉及到购买许可证(license)的问题,相信许多人都有过迷茫。不知道一些相应的license的问题。而购买license的渠道很多,那么我们应该要购买哪些license呢?他们的区别又

告诉您高丽参和西洋参的区别方法 高丽参 西洋参 人参

许多消费者都在问高丽参和西洋参的区别。西洋参又称广东人参、花旗参。高丽参和西洋参的区别主要是品种和药用功效的不同,但这两种参都统属人参科。高丽参和西洋参的区别方法高丽参,又叫做韩国红参,是属于热性的中药,大补气血的上品

哈士奇和阿拉斯加的区别 狗狗智商排名

哈士奇和阿拉斯加的区别——简介有一种狗狗和哈士奇长得很像,毛要比哈士奇长了许多。不要惊讶,它叫“阿拉斯加”。原产美国的阿拉斯加州,为什么它长得那么像哈士奇,而且都是雪橇犬呢?接下来,就让我们一起揭开它们神秘的面纱!哈士奇和阿拉

文旦和柚子的区别 姑娘果的功效与作用

文旦和柚子的区别——简介文旦和柚子是属于关系,文旦是柚子的一种文旦和柚子的区别——工具/原料文旦和柚子是属于关系,文旦是柚子的一种文旦和柚子的区别——方法/步骤文旦和柚子的区别 1、文旦 名称:文旦 产地:浙江台州玉环 别名

声明:《Mutex和monitor的区别 mutex lock 区别》为网友最美的时光分享!如侵犯到您的合法权益请联系我们删除