当前位置:w88优德官网网文章中心网站开发.Net → C#中Monitor对象和Lock关键字的区别

C#中Monitor对象和Lock关键字的区别

减小字体 增大字体 作者:w88优德官网网  来源:www.cuoxin.com  发布时间:2014-2-15 21:03:19
Monitor对象
1.Monitor.Enter(object)方法是获取锁,Monitor.Exit(object)方法是释放锁,这就是Monitor最常用的两个方法,当然在使用过程中为了避免获取锁之后因为异常,致锁无法释放,所以需要在try{} catch(){}之后的finally{}结构体中释放锁(Monitor.Exit())。
2.Monitor的常用属性和方法:    Enter(Object) 在指定对象上获取排他锁。    Exit(Object) 释放指定对象上的排他锁。    IsEntered 确定当前线程是否保留指定对象锁。    Pulse 通知等待队列中的线程锁定对象状态的更改。    PulseAll 通知所有的等待线程对象状态的更改。    TryEnter(Object) 试图获取指定对象的排他锁。    TryEnter(Object, Boolean) 尝试获取指定对象上的排他锁,并自动设置一个值,指示是否得到了该锁。    Wait(Object) 释放对象上的锁并阻止当前线程,直到它重新获取该锁。Lock关键字1.Lock关键字实际上是一个语法糖,它将Monitor对象进行封装,给object加上一个互斥锁,A进程进入此代码段时,会给object对象加上互斥锁,此时其他B进程进入此代码段时检查object对象是否有锁?如果有锁则继续等待A进程运行完该代码段并且解锁object对象之后,B进程才能够获取object对象为其加上锁,访问代码段。2.Lock关键字封装的Monitor对象结构如下: try { Monitor.Enter(obj); dosomething(); } catch(Exception ex) { } finally { Monitor.Exit(obj); }3.锁定的对象应该声明为private static object obj = new object();尽量别用公共变量和字符串、this、值类型。Monitor和Lock的区别  1.Lock是Monitor的语法糖。  2.Lock只能针对引用类型加锁。  3.Monitor能够对值类型进行加锁,实质上是Monitor.Enter(object)时对值类型装箱。4.Monitor还有其他的一些功能。本文代码示例: class Program { private static object obj = new object(); public void LockSomething() { lock (obj) { dosomething(); } } public void MonitorSomeThing() { try { Monitor.Enter(obj); dosomething(); } catch(Exception ex) { } finally { Monitor.Exit(obj); } } public void dosomething() { //做具体的事情 } }

本文引用网址:
在下列搜索引擎中搜索“C#中Monitor对象和Lock关键字的区别”的相关信息:
谷歌搜索 百度搜索 360搜索 雅虎搜索 搜狗搜索 搜搜搜索 必应搜索 有道搜索
你可能还喜欢以下文章
  • 1如何做爱真人示范图片 男女ML常...
  • 2情侣酒店开房qvod 情侣做爱视频...
  • 3怎么做爱舒服?真人示范做爱姿...
  • 4如何做爱更舒服?教你做爱72式...
  • 5雨后小故事 qq表情姐弟雨后小故...
  • 1dede:arclist 实现分页!-织梦...
  • 2免费软文发布平台汇总
  • 3dedecms实现频道封面和列表页调...
  • 4织梦DEDECMS {dede:field name...
  • 5首页flash幻灯片不显示解决方法...
  • 1嫩白少妇与猛男户外疯狂车震遭...
  • 2怎样爱爱最爽?性爱姿势真人图...
  • 3中国女大学生的淫靡生活
  • 4舒淇艳照门事件 舒淇不雅照ed2...
  • 5合肥艳照门事件 合肥艳照门全套...
  • 1如何做服务器安全维护?有哪些...
  • 2Windows Server 2003系统性能优...
  • 3IIS中的 MIME类型
  • 4设置不求人:搞懂任务栏显示项目...
  • 5远程管理Win2003服务器技巧
  • 赞助商广告

    图片文章导读