![](/img/trans.png)
[英]Do I need to synchronize resource access between Tasks with the default TaskScheduler?
[英]TaskScheduler Number of tasks that still need to be processed
我有一個服務器池,用於負載平衡某些工作。 這項工作被划分為離散的工作項,但是無法確定給定工作項將花費多少時間。
每個服務器使用TPL安排工作項的工作。 為了真正實現工作的負載平衡,我需要能夠確定每台服務器有多少待處理的工作項。
我需要做的就是獲取默認TaskScheduler的計划工作項目數。 理想情況下,我可以使用TaskSchduler.GetScheduleTasks,但此方法受保護。
一個明顯的解決方案是編寫我自己的“定制計划程序”並公開許多計划任務。 這遠不是理想的解決方案,因為我只需要這個數字,實際上我不會寫像默認的TaskScheduler一樣好的代碼。 我找不到默認任務計划程序的實現。 如果我能從中繼承呢? 有什么想法可以解決這個問題嗎?
我需要做的就是獲取默認TaskScheduler的計划工作項目數。
只需添加一個計數器,在計划新任務時將其遞增,在任務完成時將其遞減。 不要忘記使用使其線程安全,例如通過使用Interlocked.Increment 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.