我正在填補一個任務工廠的任務是這樣的(僞):任務廠力更多的任務需要從頭開始
private int _taskcounter;
剪斷
var factory = new TaskFactory();
for(var i = 0;i<1000;i++)
factory.StartNew(() => doWork());
剪斷
private void doWork(){
Interlocked.Increment(ref _taskcounter);
//do some slow I/O work here
Interlocked.Decrement(ref _taskcounter);
}
如果你現在看了_taskcounter你可以看到
最初它的起始約10個任務 ,但它會以1到2個任務/秒的速度啓動,直到隊列完成。
微不足道的行爲,不是嗎?
我的問題是:
有沒有辦法強制任務工廠啓動更多的任務?
我已經通過一些msdn示例類的變體來限制運行任務的最大值,以防止內存消耗過多。
或者這個有趣的測量方法或我的考慮是否有問題?
它沒有必要在不同的線程中運行所有的工作,否則我wouldnt使用工廠
我只想從工廠的非工作竊取行爲中受益。
對於一切依靠工廠的智慧。
爲什麼你要一次開始這麼多的任務?他們在做什麼?確保多次並行加速過程? – svick
它肯定會。正如我已經說過的那樣,這些都是很慢的tcp io任務。 io任務有99%等待硬件/網絡資源響應,因此在並行處理過程中由於速度而產生巨大影響。 –