2011年11月10日 星期四

#VB Parallel 學習


================================================

[VS2010]TPL平行運算 - 使用Parallel.For來處理影像



Stopwatch 類別

使用 Stopwatch 類別來判斷應用程式的執行時間。




'目前測試,使用在DataTable
在Parallel.for裡面將會改寫 資料值

可以跑,但是在DataBindingComplete以後
裡面本來會做排序
會出現
[ 作業無效,因為它會產生對 SetCurrentCellAddressCore 函式的可重新進入呼叫。 ]


'測試在 sum row的時候
感覺如果數量達到一定程度,不知道為什麼總是出現索引超出範圍的問題
但是裡面帶入的都是欄位名稱,也沒用到index


失敗~
只要不做寫入DataTable動作,就不會發生問題



PLINQ update failed

But there is exception:"Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index"


DataTable
這個型別對多執行緒讀取作業而言是安全的。 您必須同步任何寫入作業。

似乎是因為DataTable只支援多執行緒的讀取,
多執行緒寫入則必須做到同步作業


目前透過同步方法在平行處理中同步寫入DataTable資料
(有點不食用)



============================================

用.NET展現多核威力(3) – 佛心TPL之Parallel.For好威


http://blog.darkthread.net/post-2010-01-22-multicore-3.aspx

TPL強調的是平行運算的能力,目的在搾乾每一滴CPU運算能力。它在概念上介於ThreadPool與自行管理數條Thread之間,最精彩的地方是會依CPU的負載狀況自動調節Thread數,直到所有CPU使用率都飆上100%,系統運算能力完全被榨乾為止。換句話說,一開始迴圈只啟動一條Thread,接著會在資源允許的前題下增加平行處理的Thread數(the loop starts with a degree of 1, and may work its way up to any maximum that’s specified as resources become available,參考)。

Parallel VS For
如果在回圈中有等待回應的情況出現
或是說執行次數有一定的大量

Parallel能夠展現動態叫用執行緒的強大功能



資料和工作平行處理原則中可能出現的錯誤




平行運算 (一):Parallel.For、Parallel.Foreach 用法及技巧



==============================================

Parallel 類別



'透過 Parallel 去執行迴圈計算
看起來是開不定個 Thread, 去分別走回圈的每個step
最理想的是 1~10 , 開10個 Thread , 同時計算 1~10 For的內容

是一種回圈內的平行執行運算

Threading.Tasks.Parallel.For(起始,結束, 計算的Func)

沒有留言:

張貼留言