文章出處
文章列表
并行這個概念出自.net4.5,它被封裝在System.Threading.Tasks命名空間里,主要提供一些線程,異步的方法,或者說它是對之前Thread進行的二次封裝,為的是讓開發人員更方便的調用它,對于異步與多線程我們在之前的幾講里已經介紹過了,今天主要說說并行,并行也可以叫并行計算,即對于一個大任務,使用多個線程去計算它,這可以充分發揮多核CPU的優勢,可以說是大事所趨!
先看一下并行編程(并行計算)的圖像
對于兩個任務,任務1執行需要1秒,任務2執行需要3秒,那么,如果順序執行,它需要的時間為4秒(1+3),而如果是并行編程,那就運行時間為3秒,即(1和3一起運行,取最長的時間),這就是并行計算的魅力!
下面看兩種并行的實現方式
一 Task實現的并行
#region 并行Task Console.WriteLine(DateTime.Now); var task = Task.WhenAll(Task.Run(() => { Thread.Sleep(1000); }), Task.Run(() => { Thread.Sleep(2000); }));//多個task并行執行,不阻塞 task.ContinueWith((ctw) =>//當task完成后,執行這個回調 { Console.WriteLine("并行完成" + DateTime.Now); }); Console.WriteLine(DateTime.Now); #endregion
二 Parallel實現的并行
#region 并行Parallel Console.WriteLine(DateTime.Now); Parallel.Invoke(() => { Console.WriteLine(Thread.CurrentThread.ManagedThreadId); Thread.Sleep(1000); }, () => { Console.WriteLine(Thread.CurrentThread.ManagedThreadId); Thread.Sleep(2000); }); Console.WriteLine(DateTime.Now); Console.ReadKey(); #endregion
通過上面的圖我們可以看到,在進行并行測試時,運行時間為兩秒!
文章列表
全站熱搜