我知道如何編寫Parallel.For
和Parallel.ForEach
循環。下面是他們兩個的示例代碼:如何依次執行Parallel.For循環和Parallel.ForEach循環
Parallel.For(0,10, (int i) = >
{
Console.Writeline(i);
});
Parallel.ForEach(fruits, fruit =>
{
Console.WriteLine("Fruit Name: {0}, Thread Id= {1}", fruit, Thread.CurrentThread.ManagedThreadId);
});
但是,這兩個代碼示例的問題是循環不按順序執行。我如何讓他們順序執行?我從人們那裏聽說你必須鎖定一個物體,然後纔有可能。我試過搜索並嘗試了很多代碼示例,但沒有用。
此外,我想知道按順序執行的並行循環的性能是否會更小?如果不是,爲什麼不呢?因爲鎖定,會導致我的愚見。
至於我對並行編程的理解,調度程序在運行時進行調度。任何人都可以告訴.NET IDE使用什麼算法/策略來在多個內核上調度代碼?它的產品從並行編程中脫穎而出。
採取他們將按順序執行,第一** **對於然後** **的ForEach。但是他們在自己範圍內的結果並不能保證按順序排列。 – Shaharyar
如果你想順序執行,使用'for'和'foreach',集合的任何先決條件將降低它在'Parallel'中運行的性能,甚至可能比順序循環慢 –