zoukankan      html  css  js  c++  java
  • C#之Lock

    lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。

    class Program
        {
            static void Main(string[] args)
            {
                Thread t = new Thread(LockObject.MonitorIncrement);
                Thread t1=new Thread(new ThreadStart(LockObject.LockIncrement));
                t.Start();           
                t1.Start();          
            }
        }
    
    
        public class LockObject
        {
            /// <summary>
            /// 多线程共享数据
            /// </summary>
             private static int counter = 0;
            /// <summary>
            /// 同步对象,推荐这种写法
            /// 应避免锁定 public 类型,否则实例将超出代码的控制范围
            /// 具体如:lock (this)、lock (typeof (MyType)) 和 lock ("myLock")
            /// </summary>
             private readonly static object synisynchronize = new object();
    
            public static void MonitorIncrement()
            {
                ///Monitor.Enter 与 Monitor.Exit 相当于Lock            
                Monitor.Enter(synisynchronize);
                Thread.Sleep(1000);
                counter++;
                Console.WriteLine("MonitorIncrement counter={0}", counter);
                Monitor.Exit(synisynchronize);
            }
    
            public static void LockIncrement()
            {
                ///lock在开始时调用 Monitor.Enter 
                ///在结束时调用 Monitor.Exit 。
                lock (synisynchronize)
                {             
                    counter++;
                    Console.WriteLine("LockIncrement counter={0}" ,counter);
                }
            }
        }

    运行结果如下图示:

  • 相关阅读:
    10. Regular Expression Matching
    9. Palindrome Number
    6. ZigZag Conversion
    5. Longest Palindromic Substring
    4. Median of Two Sorted Arrays
    3. Longest Substring Without Repeating Characters
    2. Add Two Numbers
    链式表的按序号查找
    可持久化线段树——区间更新hdu4348
    主席树——树链上第k大spoj COT
  • 原文地址:https://www.cnblogs.com/bohetang/p/4039459.html
Copyright © 2011-2022 走看看