c#進階(1)—— Task Parallel Library 並存執行與串列執行

來源:互聯網
上載者:User

標籤:對象   工廠   tor   資料庫連接   流水線   .com   task   mini   nbsp   

本文參考的博文出處: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 並存執行與串列執行

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.