TaskScheduler仍需要处理的任务数

本文关键字:任务 处理 TaskScheduler | 更新日期: 2023-09-27 18:29:05

我有一个服务器池,用于负载平衡一些工作。此工作被划分为离散的工作项,但是无法确定给定的工作项需要多少时间。

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

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

一个显而易见的解决方案是编写我自己的自定义调度器,并公开计划任务的数量。这远不是理想的解决方案,因为我只需要这个数字,而且实际上我不会像默认的那样编写好TaskScheduler。我找不到默认任务调度程序的实现。如果我可以的话,也许我可以继承它?你知道我该怎么解决这个问题吗?

TaskScheduler仍需要处理的任务数

我所需要的只是获得默认TaskScheduler的计划工作项数。

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