日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#中的lock

發(fā)布時間:2025/5/22 C# 54 如意码农
生活随笔 收集整理的這篇文章主要介紹了 C#中的lock 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

C#中的lock

lock語法為:

private object o = new object();//創(chuàng)建一個對象
public void Work()
{
  lock(o)//鎖住這個對象
  {
    //做一些必須按照順序做的事情
  }
}

相當(dāng)于:

private object o = new object();//創(chuàng)建一個對象
public void Work()
{
  Monitor.Enter(o);
  //做一些必須按照順序做的事情
  Monitor.Exit(0);
}

目的是,在多線程中,使用lock后,能使該代碼塊按照指定的順序執(zhí)行,被lock這塊代碼已經(jīng)被其中一個線程訪問了,那么另外一個線程只能等待。

例子:

static int a = 0;
static int b = 0;
static void A()
{
a += 2;
Console.WriteLine($"In A,a={a}");
Thread.Sleep(5000);
b += 2;
Console.WriteLine($"In A,b=");
} static void B()
{
b++;
Console.WriteLine($"In B,b=");
Thread.Sleep(1000);
a++;
Console.WriteLine($"In B,a={a}");
} static void Main()
{
A();
B();
Console.ReadLine();
}

按照單線程,先執(zhí)行A,然后B,沒有問題。

output:

In A,a=2
In A,b=2
In B,b=3
In B,a=3

改為:

static void Main()
{
Task t1 = new Task(A);
Task t2 = new Task(B);
t1.Start();
t2.Start();
Console.ReadLine();
}

output:

In A,a=2
In B,b=1
In B,a=3
In A,b=3

而我們期望,不論是先執(zhí)行A還是B,在同一個時間,一個線程執(zhí)行A或者B,即使用線程鎖lock的時候,不會出現(xiàn)兩個線程搶占執(zhí)行函數(shù)的情況;

static object o=new object();//鎖對象
static int a = 0;
static int b = 0;
static void A()
{
lock (o)//鎖定同一對象,僅允許同一時間,一個線程進(jìn)行如下操作
{
a += 2;
Console.WriteLine($"In A,a={a}");
Thread.Sleep(5000);
b += 2;
Console.WriteLine($"In A,b=");
} } static void B()
{
lock (o)//鎖定同一對象,僅允許同一時間,一個線程進(jìn)行如下操作
{
b++;
Console.WriteLine($"In B,b=");
Thread.Sleep(1000);
a++;
Console.WriteLine($"In B,a={a}");
} } static void Main()
{
Task t1 = new Task(A);
Task t2 = new Task(B);
t1.Start();
t2.Start();
Console.ReadLine();
}

output:

In B,b=1
In B,a=1
In A,a=3
In A,b=3

output:

In A,a=2
In A,b=2
In B,b=3
In B,a=3

總結(jié)

以上是生活随笔為你收集整理的C#中的lock的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。