![](/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.