lock与C#多线程 lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。简单讲就类似于 你去银行办理业务,一个柜台一次只能操作以为客户,而如果你要到这个柜台办理业务就必须等前面的人的业务完成,而彼此之间不会有交集。下面通过具体的代码来深入 ...
lock与C#多get='_blank'>线程
lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。简单讲就类似于 你去银行办理业务,一个柜台一次只能操作以为客户,而如果你要到这个柜台办理业务就必须等前面的人的业务完成,而彼此之间不会有交集。下面通过具体的代码来深入说明:
using System;using System.Threading;namespace LockTest{ class Program { static void Main() { Test test = new Test(); Thread one = new Thread(test.ThreadOne); //线程一调用test的 ThreadOne 方法 Thread two = new Thread(test.ThreadTwo); //线程而调用test的 ThreadTwo 方法 one.Start(); //启动线程一 two.Start(); //启动线程二 Console.ReadKey(); } } class LockTest { public int Number { get; set; } = 10; public void Print() { Console.WriteLine("The number is " + Number); } } class Test { private readonly LockTest _lockTest = new LockTest(); //用于测试的对象 public void ThreadOne() { //在此方法内锁定 _lockTest 所引用的对象并执行相应操作,在操作执行完以前不会释放次对象 lock (_lockTest) { Console.WriteLine("The object has been locked!"); Thread.Sleep(5000); //让当前线程休眠 5s _lockTest.Number = 200; Console.Write("ThreadOne: "); _lockTest.Print(); } //操作完成并释放对象 Console.WriteLine("The object has been released!"); } public void ThreadTwo() {
原标题:lock与C#多线程
关键词:C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。