C#並行編程–並行任務

來源:互聯網
上載者:User

並行任務的概念(from  msdn)

工作平行程式庫 (TPL) 基於任務的概念。 術語“任務並行”是指一個或多個獨立的任務同時運行。 任務表示非同步作業,在某些方面它類似於建立新線程或 ThreadPool 工作項目,但抽象層級較高。 任務提供兩個主要好處:

  • 系統資源的使用效率更高,延展性更好。

    在後台,任務排隊到 ThreadPool,ThreadPool 已使用登山等演算法進行增強,這些演算法能夠確定並調整到可最大化輸送量的線程數。 這會使任務相對輕量,您可以建立很多任務以啟用細化並行。 為了補償這一點,可使用眾所周知的工作竊取演算法提供Server Load Balancer。

  • 對於線程或工作項目,可以使用更多的編程式控制件。

    任務和圍繞它們產生的架構提供了一組豐富的 API,這些 API 支援等待、取消、繼續、可靠的異常處理、詳細狀態、自訂計劃等功能。

出於這兩個原因,在 .NET Framework 4 中,任務是用於編寫多線程、非同步和並行代碼的首選 API。

 

建立和運行任務的兩種方式

1.隱式建立並運行任務

Parallel.Invoke(),這個方法提供隱式建立任務並且直接運行,參數就是Action,而且可以是多個Action方法

有幾種代碼可以實現

1.            Parallel.Invoke(() =>            {                Console.WriteLine("test");            });2.          Parallel.Invoke(Sum1, Sum2);3.           Parallel.Invoke(()=> Sum1());          //Sum1是方法名稱

2.顯式建立和運行任務

1.建立任務和運行任務分開執行的方式。先建立Task,然後調用Start開始Task t = new Task(Sum1); t.Start();2,建立任務和運行任務一起執行的方式。Task.Factory.StartNew(Action action )

顯式和隱式建立任務不僅僅是代碼方式的不同,

最大的不同在於Paralle.Invoke執行並行方法以後是要等待方法執行完畢的並返回的

Task建立的任務是非同步執行,不等待任務執行完畢的。所以Parallel.Invoke相當於Task開始執行以後調用Task.Wait()這個方法。

 

比如

 //Sum1執行一段耗時方法,然後輸出結果 Parallel.Invoke(Sum1) 
Console.WriteLine(".......................");
這個方法會先輸出Sum1的結果,然後才輸出“。。。。。。。。。。。”

Task t = new Task(Sum1); t.Start(); Console.WriteLine(".......................");這個方法會先輸出".............."然後才輸出Sum1的結果

 

 在任務中返回結果

在Task中返回結果比較簡單

使用Task<Result> 就可以返回結果

Task<int> task1 = Task<int>.Factory.StartNew(() => 1); 
int i = task1.Result;

Task<Test> task2 = Task<Test>.Factory.StartNew(() => { string s = ".NET"; double d = 4.0; return new Test { Name = s, Number = d }; }); Test test = task2.Result;

 




 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.