2012-01-19 28 views

回答

3

第二鏈路不知道給Introduction to PLINQ頁面,其中給出了兩個例子:

這是當您想要確保在計算機上運行的其他進程獲得一定的CPU時間時很有用。

在查詢執行大量非計算限制工作(如文件I/O)的情況下,指定大於機器核心數量的並行度可能會有所幫助。

如果這些都不是引人注目給你,或者匹配您如何使用PLINQ,你不能想到的任何其他情況下(例如,如果他們會爭相使用一些其他的資源,其具有有限數量的可用實例),那麼我建議將其退出。

+0

這很有趣,人們會建議使用IO *多線程與IO。它的好處取決於硬件,但是對於我有限的知識來說,最好使用少IO線程來減少上下文切換的時間以及支持多線程所需的相關IO工作。 – oleksii

+0

對不起,但我仍然不明白,爲什麼你想在做文件/ IO時有更多的線程。如何改變正在使用的CPU數量會改變進程獲得的CPU時間 – TheWommies

+0

@AllenHo - 它不會影響進程獲得的CPU時間 - 但它確實允許更多的IO操作同時「在運行」 - 每個涉及的線程不是*嘗試*使用CPU。 –

0

您可以在並行循環中使用此方法。例如,我在DataGridView中的記錄過程中使用了paralellizm。

int tasks = Environment.ProcessorCount; 
DataGrid.Rows.AsParallel().OfType<DataGridViewRow>().WithDegreeOfParallelism(tasks).ForAll(i => 
{ 
    // some code 
}); 

默認情況下,DegreeOfParallelism等於處理器核的數量。該參數定義了在處理時將創建多少個併發任務(即線程)。當我使用默認度(4核)時,我的應用程序「掛起」了一點,所以我決定將並行度降低到2.無論如何,您應該根據需要選擇此參數的值(或者讓用戶選擇強制他做一個選擇;))