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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

c#进阶(1)—— Task Parallel Library 并行执行与串行执行

發布時間:2023/12/10 C# 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c#进阶(1)—— Task Parallel Library 并行执行与串行执行 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文參考的博文出處:http://www.cnblogs.com/stoneniqiu/p/4857021.html

總體說明:

(1)、理解硬件線程和軟件線程

  硬件線程也稱為邏輯內核,一個物理內核可以使用超線程技術提供多個硬件線程。所以一個硬件線程并不代表一個物理內核;Windows中每個運行的程序都是一個進程,每一個進程都會創建并運行一個或多個線程,這些線程稱為軟件線程。硬件線程就像是一條泳道,而軟件線程就是在其中游泳的人。

(2)Net Framework4 引入了新的Task Parallel Library(任務并行庫,TPL),它支持數據并行、任務并行和流水線。讓開發人員應付不同的并行場合。

  • 數據并行:有大量數據需要處理,并且必須對每一份數據執行同樣的操作。比如通過256bit的密鑰對100個Unicode字符串進行AES算法加密。
  • 任務并行:通過任務并發運行不同的操作。例如生成文件散列碼,加密字符串,創建縮略圖。
  • 流水線:這是任務并行和數據并行的結合體。

? ? TPL引入了System.Threading.Tasks ,主類是Task,這個類表示一個異步的并發的操作,然而我們不一定要使用Task類的實例,可以使用Parallel靜態類。它提供了Parallel.Invoke, Parallel.For Parallel.Forecah 三個方法。

一、業務場景

  目前在模擬工作中可能遇到的一個場景,從中間服務器讀取xml文件,分別為兩法刑事案件信息,兩法行政案件信息(目前模擬的兩個xml文件單詞導入的業務數據量在20000~30000條左右),對應兩張數據庫表為[Sys_TwoLawsConvergence_AdministrationCase]、[Sys_TwoLawsConvergence_PoliceCase],表結構及具體字段如下所示。

  其中,主鍵并非為自增,主鍵的維護由對接應用系統統一提供(目前并未建立任何索引,后期準備深入研究一下 sql server 的 b樹索引及位圖索引)。

  考慮到,同時向兩張數據表插入數據,除去使用多線程同時寫入外,.net framework 4.0 提供了新的Task Parallel Library(任務并行庫,TPL),它支持數據并行、任務并行和流水線。在此業務場景,我采用了最簡單的方法,及Parallel類的Invoke()方法,通過Stopwatch,準確測量并行執行插入數據與串行執行插入數據在執行效率上的對比。

二、具體實現

  定義了NetCloudPoliceInsertData、NetCloudAdministrationInserData類,分別為兩法刑事案件信息寫入類及兩法行政案件信息寫入類具體結構及方法如下

?  (1)NetCloudPoliceInsertData類

?

  其中DataAccessFactory.Instance().GetDataAccess("Sql Server");DataAccessFactory為自定義的數據訪問類,此處工廠模式保證工廠類對象在內存中有且僅有一個,每一次GetDataAccess()都會創建一個數據庫連接(非連接池的方式),寫入庫表的方式采用批量執行

? (2)NetCloudAdministrationInserData類

三、并行執行與串行執行效率比較

(1) Execute

  其中 Parallel靜態類的Invoke方法注釋為【盡可能并行執行提供的每個操作】,在輸出執行語句后,可以看到并行執行的執行效果,如下圖所示:

四、運行結果比較

并行執行結果時間:

串行執行結果時間:

并行執行在時間上比串行執行時間上少2分鐘左右,此次導入的數據量為20000條,后期會追加大數量的導入,以檢驗并行執行的效果。

?

總結

以上是生活随笔為你收集整理的c#进阶(1)—— Task Parallel Library 并行执行与串行执行的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。