1

我有一个服务器池,用于负载平衡某些工作。这项工作被划分为离散的工作项,但是不可能确定给定的工作项将花费多少时间。

每个服务器都使用 TPL 来安排工作项上的工作。为了真正实现负载平衡,我需要能够确定每台服务器有多少待处理的工作项。

我只需要获取默认 TaskScheduler 的计划工作项的数量。理想情况下,我可以使用TaskSchduler.GetScheduleTasks但此方法受到保护。

一个明显的解决方案是编写我自己的自定义计划程序并公开计划任务的数量。这远非理想的解决方案,因为我所需要的只是这个数字,实际上我不会写出像默认值那样好的 TaskScheduler。我找不到默认任务计划程序的实现。如果可以的话,也许我可以继承它?有什么想法可以解决这个问题吗?

4

1 回答 1

0

我只需要获取默认 TaskScheduler 的计划工作项的数量。

只需添加一个计数器,在安排新任务时将其递增,在任务完成时将其递减。不要忘记使用使其线程安全,例如使用Interlocked.Increment

于 2013-08-27T09:08:41.653 回答