最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析c# 線程同步

 更新時(shí)間:2020年08月28日 16:10:15   作者:初生不惑  
這篇文章主要介紹了c# 線程同步的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c#,感興趣的朋友可以了解下

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

在多線程程序中,允許線程訪問任何資源所需的執(zhí)行時(shí)間。線程共享資源并異步執(zhí)行。 訪問共享資源(數(shù)據(jù))是有時(shí)可能會(huì)暫停系統(tǒng)的關(guān)鍵任務(wù)。所以可以通過線程同步來處理它。

主要場(chǎng)景如:存款,取款等交易業(yè)務(wù)處理。

線程同步的優(yōu)點(diǎn)

  • 一致性維護(hù)
  • 無線程干擾

C#鎖定

使用 C# lock關(guān)鍵字同步執(zhí)行程序。它用于為當(dāng)前線程鎖定,執(zhí)行任務(wù),然后釋放鎖定。它確保其他線程在執(zhí)行完成之前不會(huì)中斷執(zhí)行。

下面,創(chuàng)建兩個(gè)非同步和同步的例子。

C# 示例:非同步

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

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();
  }
}

執(zhí)行上面示例代碼,可以看到以下輸出結(jié)果 -

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# 線程同步示例

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

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();
  }
}

執(zhí)行上面示例代碼,可以看到以下輸出結(jié)果 -

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# 線程同步的詳細(xì)內(nèi)容,更多關(guān)于c# 線程同步的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 簡(jiǎn)單的excel導(dǎo)入導(dǎo)出示例分享

    簡(jiǎn)單的excel導(dǎo)入導(dǎo)出示例分享

    這篇文章主要介紹了簡(jiǎn)單的excel導(dǎo)入導(dǎo)出示例分享,需要的朋友可以參考下
    2014-03-03
  • C#中sleep和wait的區(qū)別分析

    C#中sleep和wait的區(qū)別分析

    這篇文章主要介紹了C#中sleep和wait的區(qū)別分析,有助于深入理解C#中線程的原理與使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • winform 使用Anchor屬性進(jìn)行界面布局的方法詳解

    winform 使用Anchor屬性進(jìn)行界面布局的方法詳解

    這篇文章主要介紹了winform 使用Anchor屬性進(jìn)行界面布局的方法,有需要的朋友可以參考一下
    2013-12-12
  • c#關(guān)于JWT跨域身份驗(yàn)證的實(shí)現(xiàn)代碼

    c#關(guān)于JWT跨域身份驗(yàn)證的實(shí)現(xiàn)代碼

    這篇文章主要介紹了c#關(guān)于JWT跨域身份驗(yàn)證的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • C#托管內(nèi)存與非托管內(nèi)存之間的轉(zhuǎn)換的實(shí)例講解

    C#托管內(nèi)存與非托管內(nèi)存之間的轉(zhuǎn)換的實(shí)例講解

    在本篇文章里小編給大家整理了關(guān)于C#托管內(nèi)存與非托管內(nèi)存之間的轉(zhuǎn)換的實(shí)例以及相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。
    2019-08-08
  • 詳解C#中SqlParameter的作用與用法

    詳解C#中SqlParameter的作用與用法

    本篇文章主要介紹了C#中SqlParameter的作用與用法,因?yàn)橥ㄟ^SQL語句的方式,有時(shí)候存在腳本注入的危險(xiǎn),所以在大多數(shù)情況下不建議用拼接SQL語句字符串方式,希望通過SqlParameter實(shí)現(xiàn)來實(shí)現(xiàn)對(duì)數(shù)據(jù)的操作。
    2016-12-12
  • C#中委托和事件的區(qū)別實(shí)例解析

    C#中委托和事件的區(qū)別實(shí)例解析

    這篇文章主要介紹了C#中委托和事件的區(qū)別,并分別以實(shí)例形式展示了通過委托執(zhí)行方法與通過事件執(zhí)行方法,以及相關(guān)的執(zhí)行流程與原理分析,需要的朋友可以參考下
    2014-09-09
  • C#調(diào)用打印機(jī)實(shí)現(xiàn)打印

    C#調(diào)用打印機(jī)實(shí)現(xiàn)打印

    這篇文章介紹了C#調(diào)用打印機(jī)實(shí)現(xiàn)打印的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • 解析OpenXml?Pptx的邊框虛線轉(zhuǎn)為WPF的邊框虛線問題

    解析OpenXml?Pptx的邊框虛線轉(zhuǎn)為WPF的邊框虛線問題

    這篇文章主要介紹了OpenXml?Pptx的邊框虛線轉(zhuǎn)為WPF的邊框虛線,在文中用PPTX的7種直線,分別設(shè)置7種能夠設(shè)置的虛線類型,具體實(shí)例代碼跟隨小編一起看看吧
    2021-12-12
  • 深入理解C#中的擴(kuò)展方法

    深入理解C#中的擴(kuò)展方法

    下面這篇文章主要給大家介紹了關(guān)于c#中擴(kuò)展方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),供大家學(xué)習(xí)參考,感興趣的朋友可以了解下
    2020-06-06

最新評(píng)論

舒城县| 二连浩特市| 肥东县| 毕节市| 德兴市| 惠东县| 家居| 中山市| 宜君县| 安新县| 莱阳市| 应城市| 黔南| 平山县| 固始县| 尼玛县| 阳山县| 黄陵县| 那曲县| 宁乡县| 沭阳县| 旅游| 西乡县| 德昌县| 天门市| 普宁市| 蚌埠市| 哈巴河县| 镶黄旗| 商洛市| 定南县| 灵寿县| 天柱县| 台州市| 西藏| 进贤县| 大港区| 湖南省| 扎兰屯市| 子长县| 长汀县|