lock与monitor的区别

Posted MissQing

tags:

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

1、Lock 只能对引用对象加锁

     Lock锁定区间内可以对锁定值修改而不发生运行时错误,通常也会采用此种修改方式。这种方式又有点类同于使用Monitor.Wait取得资源,并对这个资源进行操作。

    用法: 

         private static readonly object locktask= new object();

         pulick void lock()

         {

 

            lock(locktask)

 

             {

 

             dosomething();

 

              }

 

          }

         

2、Monitor 可以对值类型加锁,实际上是在调用Monitor.Enter时对值类型装箱了

 

      Monitor在锁定区域内不能对被锁对象的值进行修改,运行时抱错“从不同步的代码块中调用了对象同步方法”

   

        private static readonly object locktask= new object();

 

        

pulick void lock()

         {

               try

              {

            Monitor.Enter(locktask)

             dosomething();

             }

           catch

           {}

          finnally

           {

           Monitor.Exit(Tasklock);

           }

 

              }

 

          }

 

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

lock,Monitor,Mutex的区别

java - synchronized与lock的区别

C#中Monitor和Lock以及区别

C#知识点总结系列:4C#中Monitor和Lock以及区别

synchronized和lock的区别

Java中Synchronized和Lock的底层实现到底有什么区别