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);

           }

 

              }

 

          }

 

转载于:https://www.cnblogs.com/MissQing/p/6165845.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值