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

C#使用Interlocked實現(xiàn)線程同步

 更新時間:2018年10月26日 08:38:12   作者:Czhenya  
今天小編就為大家分享一篇關于C#使用Interlocked實現(xiàn)線程同步,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

通過System.Threading命名空間的Interlocked類控制計數(shù)器,從而實現(xiàn)進程 的同步。Iterlocked類的部分方法如下表:

示例,同時開啟兩個線程,一個寫入數(shù)據(jù),一個讀出數(shù)據(jù)

代碼如下:(但是運行結果卻不是我們想象的那樣)

using System;
using System.Threading;
namespace 線程同步
{
  class Program
  {
    static void Main(string[] args)
    {
      //緩沖區(qū),只能容納一個字符
      char buffer = ',';
      string str = ""這里面的字會一個一個讀取出來,一個都不會少,,,"";
      //線程:寫入數(shù)據(jù)
      Thread writer = new Thread(() =>
      {
        for (int i = 0; i < str.Length; i++)
        {
          buffer = str[i];
          Thread.Sleep(20);
        }
      }       
      );
      //線程:讀出數(shù)據(jù)
      Thread Reader = new Thread(() =>
      {
        for (int i = 0; i < str.Length; i++)
        {
          char chartemp = buffer;
          Console.Write(chartemp);
          Thread.Sleep(30);
        }
      }
      );
      writer.Start();
      Reader.Start();
      Console.ReadKey();
    }
  }
}

運行結果圖:(每次運行結果都不一樣) 

修改代碼如下:

using System;
using System.Threading;
namespace 線程同步
{
  class Program
  {
    //緩沖區(qū),只能容納一個字符
    private static char buffer;
    //標識量(緩沖區(qū)中已使用的空間,初始值為0)
    private static long numberOfUsedSpace = 0;
    static void Main(string[] args)
    {
      //線程:寫入者
      Thread Writer = new Thread(delegate ()
      {
        string str = "這里面的字會一個一個讀取出來,一個都不會少,,,";
        for (int i = 0; i < 24; i++)
        {
          //寫入數(shù)據(jù)前檢查緩沖區(qū)是否已滿
          //如果已滿,就進行等待,直到緩沖區(qū)中的數(shù)據(jù)被進程Reader讀取為止
          while (Interlocked.Read(ref numberOfUsedSpace) == 1)
          {
            Thread.Sleep(50);
          }
          buffer = str[i];  //向緩沖區(qū)寫入數(shù)據(jù)
          //寫入數(shù)據(jù)后把緩沖區(qū)標記為滿(由0變?yōu)?)
          Interlocked.Increment(ref numberOfUsedSpace);
        }
      });
      //線程:讀出者
      Thread Reader = new Thread(delegate ()
      {
        for (int i = 0; i < 24; i++)
        {
          //讀取數(shù)據(jù)前檢查緩沖區(qū)是否為空
          //如果為空,就進行等待,直到進程Writer向緩沖區(qū)中寫入數(shù)據(jù)為止
          while (Interlocked.Read(ref numberOfUsedSpace) == 0)
          {
            Thread.Sleep(50);
          }
          char ch = buffer;    //從緩沖區(qū)讀取數(shù)據(jù)
          Console.Write(ch);
          Interlocked.Decrement(ref numberOfUsedSpace);
        }
      });
      //啟動線程
      Writer.Start();
      Reader.Start();
      Console.ReadKey();
    }
  }
}

正確結果圖:

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接

相關文章

  • C#的this關鍵字的2種用法

    C#的this關鍵字的2種用法

    這篇文章主要給大家分享的是C#的this關鍵字的2種用法,在使用C#的過程中,發(fā)現(xiàn)this關鍵是比較少用的,但是在下面這二個場合下是必須要使用的,不使用它是解決不了問題。下面我們就來看看文章的具體內(nèi)容吧
    2021-10-10
  • C#?RichTextBox制作文本編輯器

    C#?RichTextBox制作文本編輯器

    這篇文章主要為大家詳細介紹了C#?RichTextBox制作文本編輯器的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • C#實現(xiàn)讀取和設置文件與文件夾的權限

    C#實現(xiàn)讀取和設置文件與文件夾的權限

    這篇文章主要為大家詳細介紹了如何使用C#實現(xiàn)讀取和設置文件與文件夾的權限,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-03-03
  • Win10下C# DateTime出現(xiàn)星期幾問題的解決方法

    Win10下C# DateTime出現(xiàn)星期幾問題的解決方法

    這篇文章主要介紹了Win10下C# DateTime出現(xiàn)星期幾問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • C#實現(xiàn)Excel轉(zhuǎn)PDF時設置內(nèi)容適應頁面寬度

    C#實現(xiàn)Excel轉(zhuǎn)PDF時設置內(nèi)容適應頁面寬度

    將Excel轉(zhuǎn)為PDF格式時,通常情況下轉(zhuǎn)換出來的PDF頁面都是默認的寬度大小。所以本文提供了C#實現(xiàn)Excel轉(zhuǎn)PDF時設置內(nèi)容適應頁面寬度的示例代碼,需要的可以參考一下
    2022-04-04
  • 如何用C#創(chuàng)建用戶自定義異常淺析

    如何用C#創(chuàng)建用戶自定義異常淺析

    雖然在 C# 語言中已經(jīng)提供了很多異常處理類,但在實際編程中還是會遇到未涉及的一些異常處理,這篇文章主要給大家介紹了關于如何用C#創(chuàng)建用戶自定義異常的相關資料,需要的朋友可以參考下
    2021-06-06
  • 深入理解C#表達式樹的使用

    深入理解C#表達式樹的使用

    表達式樹是C#編程語言中一個強大的特性,本文將深入探討表達式樹的基本概念、創(chuàng)建方法、節(jié)點類型、遍歷技巧以及在C#中的應用示例,感興趣的可以了解一下
    2024-03-03
  • c# 用ffmpeg從視頻中截圖

    c# 用ffmpeg從視頻中截圖

    這篇文章主要介紹了c# 用ffmpeg從視頻中截圖的方法,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-03-03
  • C#10的13個特性

    C#10的13個特性

    本文詳細講解了C#10的13個特性,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • C#版免費離線人臉識別之虹軟ArcSoft?V3.0(推薦)

    C#版免費離線人臉識別之虹軟ArcSoft?V3.0(推薦)

    本文只是簡單介紹了如何使用虹軟的離線SDK,進行人臉識別的方法,并且是圖片的方式,本地離線識別最大的好處就是沒有延遲,識別結果立馬呈現(xiàn),對C#離線人臉識別虹軟相關知識感興趣的朋友一起看看吧
    2021-12-12

最新評論

礼泉县| 舞钢市| 洛南县| 海淀区| 和林格尔县| 浙江省| 开远市| 襄樊市| 佛山市| 临夏县| 肥西县| 宁强县| 云南省| 盐津县| 宁化县| 调兵山市| 集安市| 清新县| 台前县| 巧家县| 舞钢市| 林西县| 霍城县| 平南县| 万宁市| 樟树市| 山东省| 建湖县| 安福县| 巨野县| 游戏| 修文县| 清镇市| 辽源市| 若尔盖县| 大丰市| 普定县| 陈巴尔虎旗| 梧州市| 桓台县| 毕节市|