在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
这篇文章主要介绍了C#中Monitor对象与Lock关键字的区别,需要的朋友可以参考下
Monitor对象 Enter(Object) 在指定对象上获取排他锁。
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); }
Monitor和Lock的区别 1.Lock是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() |
请发表评论