欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c# 多線程處理多個數(shù)據(jù)的方法

 更新時間:2021年03月31日 11:00:23   作者:conan  
這篇文章主要介紹了c# 多線程處理多個數(shù)據(jù)的方法,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下

概述

多線程(multithreading),是指從軟件或者硬件上實現(xiàn)多個線程并發(fā)執(zhí)行的技術(shù)。具有多線程能力的計算機因有硬件支持而能夠在同一時間執(zhí)行多于一個線程,進而提升整體處理性能。具有這種能力的系統(tǒng)包括對稱多處理機、多核心處理器以及芯片級多處理或同時多線程處理器。在一個程序中,這些獨立運行的程序片段叫作“線程”(Thread),利用它編程的概念就叫作“多線程處理”。

隊列(Queue)代表了一個先進先出的對象集合。當您需要對各項進行先進先出的訪問時,則使用隊列。當您在列表中添加一項,稱為入隊,當您從列表中移除一項時,稱為出隊。

比如平常我們在處理定時任務的時候,假設就一臺機器,我們不可能單線程一條一條數(shù)據(jù)的去跑,這時候就需要提高機器資源的利用率。

下面我們來介紹下,如何實現(xiàn)多線程+隊列以提高并發(fā)處理能力。

代碼實現(xiàn)

1、定義線程數(shù)threadNum和隊列queues

  /// <summary>
    /// 線程總數(shù)
    /// </summary>
    private int threadNum = 4;

    /// <summary>
    /// 總數(shù)
    /// </summary>
    private int totalCount = 0;

    /// <summary>
    /// 已處理
    /// </summary>
    private int index = 0;

    /// <summary>
    /// 隊列
    /// </summary>
    private ConcurrentQueue<AssetRepayment> queues = new ConcurrentQueue<AssetRepayment>();

2、定義線程列表,往線程添加數(shù)據(jù)

  public void SubDeTransaction()
    {
      var list = new List<AssetRepayment>();
      for (int i = 0; i < 1000; i++)
      {
        list.Add(new AssetRepayment() { Title = i.ToString() + "---" + Guid.NewGuid().ToString() });
      }

      if (list == null || list.Count() == 0)
      {
        Console.WriteLine("沒有可執(zhí)行的數(shù)據(jù)");
        return;
      }
      totalCount = list.Count;
      Console.WriteLine("可執(zhí)行的數(shù)據(jù):" + list.Count() + "條");
      foreach (var item in list)
      {
        queues.Enqueue(item);
      }
      List<Task> tasks = new List<Task>();
      for (int i = 0; i < threadNum; i++)
      {
        var task = Task.Run(() =>
        {
          Process();
        });
        tasks.Add(task);
      }
      var taskList = Task.Factory.ContinueWhenAll(tasks.ToArray(), (ts) =>
      {
      });
      taskList.Wait();
    }

3、對線程數(shù)進行限制 for (int i = 0; i < threadNum; i++) 

  var taskList = Task.Factory.ContinueWhenAll(tasks.ToArray(), (ts) =>
      {
      });
      taskList.Wait();

4、從隊列取出數(shù)據(jù)進行業(yè)務處理

  private void Process()
    {
      while (true)
      {
        var currentIndex = Interlocked.Increment(ref index);
        AssetRepayment repayId = null;
        var isExit = queues.TryDequeue(out repayId);
        if (!isExit)
        {
          break;
        }
        try
        {
          Console.WriteLine(repayId.Title);

          Console.WriteLine(string.Format(" 共{0}條 當前第{1}條", totalCount, currentIndex));
        }
        catch (Exception ex)
        {
          Console.WriteLine(ex);
        }
      }
    }

代碼地址

https://gitee.com/conanOpenSource_admin/Example

以上就是c# 多線程處理多個數(shù)據(jù)的方法的詳細內(nèi)容,更多關(guān)于c# 多線程處理多個數(shù)據(jù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#實現(xiàn)會移動的文字效果

    C#實現(xiàn)會移動的文字效果

    這篇文章主要為大家詳細介紹了C#實現(xiàn)會移動的文字效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • C#語言中條件與&&與條件或||的區(qū)別

    C#語言中條件與&&與條件或||的區(qū)別

    這篇文章主要介紹了&&:邏輯與,前后條件同時滿足表達式為真 ||:邏輯或,前后條件只要有一個滿足表達式為真,下面結(jié)合案例給大家介紹,需要的朋友可以參考下
    2015-07-07
  • C# 批處理調(diào)用方法

    C# 批處理調(diào)用方法

    當批處理和aspx不在同一目錄中時,最好用WorkingDirectory設置啟動的進程的初始目錄為批處理所在目錄,否則如上例中批處理新建的目錄就應在aspx所在目錄中而不是批處理所在目錄了!
    2008-12-12
  • C#基于百度AI實現(xiàn)機器翻譯功能

    C#基于百度AI實現(xiàn)機器翻譯功能

    眾所周知,基于百度ai開發(fā)平臺我們可以實現(xiàn)了人臉識別、文字識別 、語音識別等功能。本文將介紹它的另一個功能,即實現(xiàn)機器翻譯,感興趣的可以了解一下
    2022-01-01
  • C# Memcached緩存用法實例詳解

    C# Memcached緩存用法實例詳解

    這篇文章主要介紹了C#中Memcached緩存用法,以實例形式詳細講述了在C#中針對Memcached緩存的各種操作,非常具有實用價值,需要的朋友可以參考下
    2014-10-10
  • C# 拼圖魔方小游戲

    C# 拼圖魔方小游戲

    這篇文章主要介紹了C# 拼圖魔方小游戲,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • WCF實現(xiàn)的計算器功能實例

    WCF實現(xiàn)的計算器功能實例

    這篇文章主要介紹了WCF實現(xiàn)的計算器功能,結(jié)合具體實例形式較為詳細的分析了WCF實現(xiàn)計算器功能的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • C# 調(diào)用FFmpeg處理音視頻的示例

    C# 調(diào)用FFmpeg處理音視頻的示例

    這篇文章主要介紹了C# 調(diào)用FFmpeg處理音視頻的示例,幫助大家更好的利用c# 處理音視頻,感興趣的朋友可以了解下
    2020-12-12
  • C#?RabbitMQ的使用詳解

    C#?RabbitMQ的使用詳解

    本文主要介紹了C#?RabbitMQ的使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • C# PropertyGrid使用案例詳解

    C# PropertyGrid使用案例詳解

    這篇文章主要介紹了C# PropertyGrid使用案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08

最新評論