91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c# 線程同步

發布時間:2020-09-24 09:20:02 來源:億速云 閱讀:130 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關c# 線程同步,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

同步是一種只允許一個線程在特定時間訪問某些資源的技術。沒有其他線程可以中斷,直到所分配的線程或當前訪問線程訪問數據完成其任務。

在多線程程序中,允許線程訪問任何資源所需的執行時間。線程共享資源并異步執行。 訪問共享資源(數據)是有時可能會暫停系統的關鍵任務。所以可以通過線程同步來處理它。

主要場景如:存款,取款等交易業務處理。

線程同步的優點

  • 一致性維護
  • 無線程干擾

C#鎖定

使用 C# lock關鍵字同步執行程序。它用于為當前線程鎖定,執行任務,然后釋放鎖定。它確保其他線程在執行完成之前不會中斷執行。

下面,創建兩個非同步和同步的例子。

C# 示例:非同步

在這個例子中,我們不使用鎖。此示例異步執行。換句話說,線程之間存在上下文切換。

using System;
using System.Threading;
class Printer
{
  public void PrintTable()
  {
    for (int i = 1; i <= 5; i++)
    {
      Thread t = Thread.CurrentThread;
      Thread.Sleep(200);
      Console.WriteLine(t.Name+" "+i);
    }
  }
}
class Program
{
  public static void Main(string[] args)
  {
    Printer p = new Printer();
    Thread t1 = new Thread(new ThreadStart(p.PrintTable));
    Thread t2 = new Thread(new ThreadStart(p.PrintTable));
    t1.Name = "Thread 1 :";
    t2.Name = "Thread 2 :";
    t1.Start();
    t2.Start();
  }
}

執行上面示例代碼,可以看到以下輸出結果 -

Thread 2 : 1
Thread 1 : 1
Thread 2 : 2
Thread 1 : 2
Thread 2 : 3
Thread 1 : 3
Thread 2 : 4
Thread 1 : 4
Thread 2 : 5
Thread 1 : 5

C# 線程同步示例

在這個例子中,我們使用lock塊,因此示例同步執行。 換句話說,線程之間沒有上下文切換。在輸出部分,可以看到第二個線程在第一個線程完成任務之后開始執行。

using System;
using System.Threading;
class Printer
{
  public void PrintTable()
  {
    lock (this)
    {
      for (int i = 1; i <= 5; i++)
      {
        Thread t = Thread.CurrentThread;
        Thread.Sleep(100);
        Console.WriteLine(t.Name + " " + i);
      }
    }
  }
}
class Program
{
  public static void Main(string[] args)
  {
    Printer p = new Printer();
    Thread t1 = new Thread(new ThreadStart(p.PrintTable));
    Thread t2 = new Thread(new ThreadStart(p.PrintTable));
    t1.Name = "Thread 1 :";
    t2.Name = "Thread 2 :";
    t1.Start();
    t2.Start();
  }
}

執行上面示例代碼,可以看到以下輸出結果 -

Thread 1 : 1
Thread 1 : 2
Thread 1 : 3
Thread 1 : 4
Thread 1 : 5
Thread 2 : 1
Thread 2 : 2
Thread 2 : 3
Thread 2 : 4
Thread 2 : 5

上述就是小編為大家分享的c# 線程同步了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

元谋县| 泾阳县| 博客| 法库县| 包头市| 娄烦县| 夏河县| 浮梁县| 遵化市| 渝北区| 海淀区| 元谋县| 五原县| 三明市| 邵东县| 双江| 临猗县| 绥芬河市| 同心县| 潞西市| 襄垣县| 清涧县| 商洛市| 左贡县| 柳江县| 灵璧县| 白朗县| 象州县| 喀什市| 鄂州市| 玉屏| 河东区| 思茅市| 南城县| 肥乡县| 昂仁县| 固阳县| 天等县| 雷山县| 淳安县| 博爱县|