上篇博文中,我們介紹了Thread和ThreadPool:
多線程異步編程示例和實踐-Thread和ThreadPool
本文中我們繼續(xù),說一下TPL(Task Parallel Library, 簡稱TPL)。
在實際的開發(fā)中,使用線程池相當復雜,線程的異常捕獲、傳遞以及編排這些問題實現(xiàn)起來都很復雜。
從 .NET Framework 4 開始,TPL 是編寫多線程代碼和并行代碼的首選方法。顧名思義,任務并行庫 (TPL) 基于任務的概念。 術語“任務并行”是指一個或多個獨立的任務同時運行。 任務表示異步操作,在某些方面它類似于創(chuàng)建新線程或 ThreadPool 工作項,但抽象級別較高。 任務的提供有兩個主要好處:
1). 系統(tǒng)資源的使用效率更高,可伸縮性更好。
在后臺,任務排隊到 ThreadPool,ThreadPool 已使用登山等算法進行增強,這些算法能夠確定并調(diào)整到可最大化吞吐量的線程數(shù)。 這會使任務相對輕量,可以創(chuàng)建很多任務,啟用細化并行
2). TPL提供了一組簡單豐富的 API,這些 API 支持等待、取消、繼續(xù)、可靠的異常處理、詳細狀態(tài)、自定義計劃等功能。降低多線程編碼和并行編程的復雜度,提升開發(fā)效率。
1. 創(chuàng)建和運行任務
多次執(zhí)行,輸出結果: