zoukankan      html  css  js  c++  java
  • 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);

               }

                  }

              }

  • 相关阅读:
    test20180922 倾斜的线
    test20180921 量子纠缠
    test20180921 手机信号
    test20180919 选择客栈
    BZOJ3083 遥远的国度
    test20180907 day1
    [ZJOI2010]基站选址
    HDU3584 Cube
    POJ2155 Matrix
    test20180902 day1
  • 原文地址:https://www.cnblogs.com/MissQing/p/6165845.html
Copyright © 2011-2022 走看看