task-parallel-library

    6熱度

    3回答

    我正在尋找一個好的庫,最好在C#中,我可以在Windows服務中使用它,它將處理所有需要的多線程功能。 該服務將每x分鐘運行一次,檢查數據庫以調用進程,併爲每個進程生成一個線程並運行它。 每個線程都應該處理異常,日誌記錄等。 有什麼建議嗎?

    4熱度

    1回答

    我看TPL異常處理例如從MSDN @ http://msdn.microsoft.com/en-us/library/dd537614(v=VS.100).aspx 代碼的基本形式是: Task task1 = Task.Factory.StartNew(() => { throw new IndexOutOfRangeException(); }); try { task1.Wai

    5熱度

    1回答

    .NET 4引入了一些類型以很好地支持cooperative cancellation。我希望能夠取消在不同AppDomain中運行的操作。 CancellationToken類型是一個結構。如果我將它傳遞給另一個AppDomain,它會正常工作嗎?

    2熱度

    1回答

    我明白當我執行Parallel.For和類似構造時,TPL使用工作竊取隊列來完成任務。 如果我正確理解這一點,構造將啓動一些任務,每個任務將開始處理項目。如果其中一項任務完成了他們的分配項目,它將開始從尚未完成其他任務的項目中竊取項目。這解決了項目1-100處理便宜而項目101-200昂貴的問題,並且兩項任務中的一項將僅處於空閒狀態直到另一項完成。 (我知道這是一個簡化的exaplanation。

    37熱度

    2回答

    如果我有下面的代碼塊中的方法(使用.NET 4和任務並行庫): var task = new Task(() => DoSomethingLongRunning()); task.Start(); 並且該方法返回,將那個任務超出範圍和被垃圾收集,或它會完成嗎?我沒有注意到GCing的任何問題,但是要確保我不會因爲與GC的競爭狀況而陷入困境。

    4熱度

    1回答

    我有一些使用異步編程模型(APM)習慣用語(例如BeginRead/EndRead)在C#中編寫的高性能文件傳輸代碼。該代碼從本地磁盤讀取文件並將其寫入套接字。 爲了在現代硬件上獲得最佳性能,儘可能在飛行中保留多個未完成的I/O操作非常重要。因此,我在該文件上發佈了幾個BeginRead操作,然後當完成時,我在套接字上調用BeginSend,完成後我在文件上執行另一個BeginRead。細節比這個

    36熱度

    6回答

    什麼時候會選擇使用Rx而不是TPL還是兩個框架是正交的? 根據我的理解,Rx主要是爲了提供對事件的抽象並允許組合,但它也允許提供對異步操作的抽象。 使用Createxx重載和Fromxxx重載並通過處置返回的IDisposable來取消。 TPL還通過任務和取消功能提供操作的抽象。 我的困境是什麼時候使用哪種方法和什麼情況?

    2熱度

    1回答

    任何想法如何通過閉包在Parallel.ForEach內部訪問時調用模擬對象?我認爲,因爲每次調用都在Rhino Mocks丟失跟蹤對象的不同線程上? 僞代碼: var someStub = MockRepository.GenerateStub() Parallel.Foreach(collectionOfInts, anInt => someStub.DoSomething(anInt))

    16熱度

    1回答

    我讀過PLinq會自動使用非並行Linq,如果它發現PLinq更昂貴。所以我想,爲什麼不使用PLinq來處理所有事情(如果可能),並讓運行時決定使用哪一個。 這些應用程序將部署到多核服務器,我可以開發更多的代碼來處理並行性。 使用plinq作爲默認的缺陷是什麼?

    18熱度

    1回答

    ParallelEnumerable有一個靜態成員AsParallel。如果我有IEnumerable<T>並且想要使用Parallel.ForEach這是否意味着我應該始終使用AsParallel? 例如 這兩個都是正確的(一切都是平等的)? 沒有AsParallel: List<string> list = new List<string>(); Parallel.ForEach<strin