task-parallel-library

    6熱度

    1回答

    我想遍歷硬盤驅動器上的目錄並搜索特定搜索字符串的所有文件。這聽起來像是可以(或應該)並行完成的事情的完美候選人,因爲IO很慢。 傳統上,我會編寫一個遞歸函數來查找並處理當前目錄中的所有文件,然後遞歸到該目錄中的所有目錄中。我想知道如何將其修改爲更加平行。起初我只是修改: foreach (string directory in directories) { ... } 到 Parallel.F

    1熱度

    2回答

    我在Visual C++ 2010中使用併發運行時,並對parallel_invoke和task_group(部分PPL或Parallel Patterns Library)的功能感興趣。我希望能夠開始通過函數對象(而不是lambda函數或函數指針)兩個平行的動作,但我不能因爲一個錯誤的代碼編譯,: error C3848: expression having type 'const C' wou

    0熱度

    2回答

    我想獲得社區對此的看法。如果我有一個嚴重限制DB/IO的進程,那麼使用Task Parallel庫並行化各個進程路徑有多聰明? 我會用一個例子......如果我有一大堆的項目,我需要做下面的操作 查詢一個數據庫的項目列表 做一些聚合操作根據動態參數列表對某些項目進行分組。 對於每個分組結果,根據聚合結果查詢數據庫中的內容。 對於每個分組結果,執行一些數值計算(3和4會按順序發生)。 做一些插入和更

    0熱度

    1回答

    我需要將多個LI拆分爲兩個帶有javascript的UL。 只有代碼,我可以編輯是templatefile: [foreach array="nodes" as="node"] <li> <a href="%prefix%view/%node.id%" [if expr="%node.id%==%id% || %node.id%==%parent_id%"] class="ho

    100熱度

    5回答

    我正在實施一種方法Task<Result> StartSomeTask(),並且在調用該方法之前碰巧知道了結果。如何創建已完成的Task<T>? 這是目前我在做什麼: private readonly Result theResult = new Result(); public override Task<Result> StartSomeTask() { var task =

    1熱度

    3回答

    我想知道什麼是最好的方式,以串行處理一個長期運行的進程的結果的低優先級的線程,但在使用.NET 4.0 Parallel Extensions低優先級的線程順序排隊的項目。 我有以下類,無論是否執行並提供結果: public class Step { public string Name { get; set; } public TimeSpan Duration { get

    1熱度

    2回答

    我有幾個通過TPL創建的線程(可能不相關)。一些線程通過簡單地枚舉一個包含List而不需要修改任何東西來與特定對象進行交互。其他線程添加或刪除列表中的項目。目前,我在所有代碼段周圍都有鎖定語句,這些代碼段列舉了修改列表的所有代碼段周圍的列表和鎖定語句。 我沒有遇到任何性能問題,所以就是這樣。但是,我意識到更高效的解決方案是允許許多併發枚舉器,並且在修改列表時只鎖定所有其他部分。目前,在任何給定時間

    7熱度

    1回答

    我試圖使用Task.Factory.ContinueWhenAll()幾次,只是當所有的前件運行完成沒有任何錯誤或取消時調用延續的意圖。這樣做會導致一個ArgumentOutOfRangeException與消息被拋出, 是無效的排除特定的延續種爲延續關閉的多個任務。參數名稱:continuationOptions 例如,代碼 var first = Task.Factory.StartNew<M

    6熱度

    4回答

    不可能將整個.net應用程序設置爲除.net中的用戶配置文件以外的其他文化。控制cultureinfo的適當方式似乎是在諸如DateTime之類的對象上使用專用方法。但是,當處理大量遺留代碼(並非所有代碼都在您的控制下)時,這是不可能實現的。因此,人們可以創建一個子類/包裝到線程或線程池,並在委託執行之前設置所需的文化信息,或者可以要求委託本身包含一組文化。 (很難驗證和容易misstakes .

    18熱度

    6回答

    我的代碼: var r = from x in new Task<int>(() => 1) from y in new Task<int>(() => x + 1) select y; r.ContinueWith(x => Console.WriteLine(x.Result)).Start(); 或 new Task<int>(() => 1) .Co