程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#並行編程-Parallel,

C#並行編程-Parallel,

編輯:C#入門知識

C#並行編程-Parallel,


菜鳥學習並行編程,參考《C#並行編程高級教程.PDF》,如有錯誤,歡迎指正。

 

TPL中引入了一個新命名空間System.Threading.Tasks,在該命名空間下Task是主類,表示一個類的異步的並發的操作,創建並行代碼的時候不一定要直接使用Task類,在某些情況下可以直接使用Parallel靜態類(System.Threading.Tasks.Parallel)下所提供的方法,而不用底層的Task實例。

Parallel.Invoke 

試圖將很多方法並行運行,如果傳入的是4個方法,則至少需要4個邏輯內核才能足以讓這4個方法並發運行,邏輯內核也稱為硬件線程。

需要注意的是:1.即使擁有4個邏輯內核,也不一定能夠保證所需要運行的4個方法能夠同時啟動運行,如果其中的一個內核處於繁忙狀態,那麼底層的調度邏輯可能會延遲某些方法的初始化執行。

                    2.通過Parallel.Invoke編寫的並發執行代碼一定不能依賴與特定的執行順序,因為它的並發執行順序也是不定的。

                    3.使用Parallel.Invoke方法一定要測量運行結果、實現加速比以及邏輯內核的使用率,這點很重要。

                    4.使用Parallel.Invoke,在運行並行方法前都會產生一些額外的開銷,如分配硬件線程等。

 

好處:這是一種並行運行很多方法的簡單方式,使用Parallel.Invoke,不需要考慮任務和線程的問題。

下面貼代碼:

class Program { private static List<Product> ProductList = null; /* coder:釋迦苦僧 * 沒有特定的執行順序 * 示例中 基於電腦配置 采用了4個方法的並行編程 * Parallel.Invoke 首先會嘗試並行啟動4個方法,充分利用一個或多個物理處理器所提供的多個邏輯內核 * 但是在實際的並行執行中,至少要有4個邏輯內核才能滿足4個方法的並行運行 * 如果有個或者多個邏輯內核處於繁忙狀態,那麼底層的調度邏輯可能會延遲某些方法的初始化執行 * 通過Parallel.Invoke編寫的並發執行代碼一定不能依賴與特定的執行順序,因為它的並發執行順序也是不定的。 */ static void Main(string[] args) { ProductList = new List<Product>(); Thread.Sleep(3000); Stopwatch swTask = new Stopwatch(); swTask.Start(); /*執行並行操作*/ Parallel.Invoke(SetProcuct1_500, SetProcuct2_500, SetProcuct3_500, SetProcuct4_500); swTask.Stop(); Console.WriteLine("500條數據 並行編程所耗

左移運算符(<<)

將一個運算對象的各二進制位全部左移若干位(左邊的二進制位丟棄,右邊補0)。

例:a = a << 2 將a的二進制位左移2位,右補0,

左移1位後a = a * 2;

若左移時捨棄的高位不包含1,則每左移一位,相當於該數乘以2。
右移運算符(>>)

將一個數的各二進制位全部右移若干位,正數左補0,負數左補1,右邊丟棄。

操作數每右移一位,相當於該數除以2。

例如:a = a >> 2 將a的二進制位右移2位,

左補0 or 補1 得看被移數是正還是負。
 

c語言中符號<<是什

左移運算符(<<)

將一個運算對象的各二進制位全部左移若干位(左邊的二進制位丟棄,右邊補0)。

例:a = a << 2 將a的二進制位左移2位,右補0,

左移1位後a = a * 2;

若左移時捨棄的高位不包含1,則每左移一位,相當於該數乘以2。
右移運算符(>>)

將一個數的各二進制位全部右移若干位,正數左補0,負數左補1,右邊丟棄。

操作數每右移一位,相當於該數除以2。

例如:a = a >> 2 將a的二進制位右移2位,

左補0 or 補1 得看被移數是正還是負。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved