首页 > 代码库 > C#之Lock
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); } } }
运行结果如下图示:
C#之Lock
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。