你的位置:首页 > 软件开发 > ASP.net > lock与C#多线程

lock与C#多线程

发布时间:2016-01-16 15:00:03
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#

C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录