任務並行庫(task parallel library,tpl)可以被認為是執行緒池上的又乙個抽象層,其對程式設計師隱藏了與執行緒池互動的底層**,並提供了更方便的細粒度的api。
1. 使用建構函式建立任務,傳入乙個lambda表示式作為action委託,呼叫start()啟動任務。
2. 使用task.run()執行任務,與使用建構函式建立任務不同,task.run()建立的任務會立刻開始執行,無需呼叫start()
3.使用task.factory.startnew()執行任務,與使用建構函式建立任務不同,task.factory.startnew()建立的任務會立刻開始執行,無需呼叫start()
4.標記任務為長時間操作,結果該任務將不會使用執行緒池,而在單獨的執行緒中執行。
usingsystem;
using
system.threading;
using
system.threading.tasks;
namespace
chapter4.recipe2
", result);
task = createtask("
task 2");
task.runsynchronously();
//同步執行task,執行在主線程中
result =task.result;
console.writeline(
"task 2 result is:
", result);
task = createtask("
task 3");
console.writeline(task.status);
task.start();
while (!task.iscompleted) //
迴圈列印任務狀態,不阻塞主線程
C 使用任務並行庫 TPL
tpl task parallel library 任務並行庫 tpl 是 system.threading和 system.threading.tasks 命名空間中的一組公共型別和 api。tpl 的目的是通過簡化將並行和併發新增到應用程式的過程來提高開發人員的工作效率。使用執行緒池可以減少並行...
多執行緒程式設計學習筆記 任務並行庫(一)
接上文 多執行緒程式設計學習筆記 基礎 一 接上文 多執行緒程式設計學習筆記 基礎 二 接上文 多執行緒程式設計學習筆記 基礎 三 接上文 多執行緒程式設計學習筆記 執行緒同步 一 接上文 多執行緒程式設計學習筆記 執行緒同步 二 接上文 多執行緒程式設計學習筆記 執行緒同步 三 接上文多執行緒程式...
C 多執行緒開發之任務並行庫詳解
目錄 之前學習了執行緒池,知道了它有很多好處。使mvsaevt用執行緒池可以使我們在減少並行度花銷時節省作業系統資源。可認為執行緒池是乙個抽象層,其向程式設計師隱藏了使用執行緒的細節,使我們可以專心處理程式邏輯,而不是各種執行緒問題。但也不是說我們所有的專案中都上線程池,其實它也有很多弊端,比如我們...