2016-04-04 18 views
0

我正在設計一個高擴展性的應用程序。它會有許多處理節點從普通隊列中獲取任務並處理它們。如何知道ThreadPool積壓中排隊的項目數

我的想法是在每個從任務隊列中讀取並啓動任務來完成工作的節點中都有一個線程。

我的問題是如何限制每個節點中排隊的Task的數量,因爲它僅取決於創建Task的線程的速度,而不取決於節點的當前負載。 如何知道ThreadPool中排隊的項目數量? 我該如何做一個公平的任務分配?

謝謝你的時間。

+1

看看[這個](http://stackoverflow.com/questions/4410959/how-can-i-determine-the-number-of-items-in-threadpool-queue) – Zero

+0

你是什麼意思通過「處理節點」?如果它們只是一個共享內存系統中的處理器,那麼您應該依賴Task Parallel Library的默認調度程序,它可以爲您處理所有這些問題。 – Douglas

+0

只需使用信號量/ Slim。在啓動任務之前調用Wait(),在任務完成時調用Release()。您在構造函數中指定了多少個未完成的任務。 –

回答

0

每次創建任務時從普通隊列開始應該Interlocked.Increment變量QueuedTaskCount,每個任務在開始時都應該Interlocked.Decrement同一個變量。變量QueuedTaskCount現在包含排隊的任務數量。

相關問題