我正在设计一个高度可扩展的应用程序。它将有许多处理节点从公共队列中获取任务并处理它们。
我的想法是在每个节点中都有一个线程从任务队列中读取并启动一个任务来完成工作。
我的问题是如何限制每个节点中排队的Task的数量,因为它只取决于创建Task的线程的速度,而不取决于节点的当前负载。 我如何知道ThreadPool中排队项目的数量? 如何公平地分配任务?
感谢您的时间。
答案 0 :(得分:0)
每次从公共队列创建任务时都应该Interlocked.Increment变量QueuedTaskCount,每个任务在开始时应该Interlocked.Decrement相同的变量。变量QueuedTaskCount现在包含多个排队任务。