考虑一个包含多个消费者的作业队列,我想在 C#中编写一个应用程序,它一次取出一个作业并执行它。队列驻留在一个单独的服务器上,我可能必须运行我的应用程序的多个实例,以保持队列按时提供服务。
我认为最佳做法是使用Task.Run
来确保使用消费者CPU的最大功率。在此实现中,主线程正在轮询队列,一旦作业可用,它就会出列,然后使用Task.Run
倾向于在另一个线程中。
我担心的是,因为一旦消费者将一份工作排队,就会超出其他消费者的影响范围,消费者是否有可能从事过多的工作而其他人是免费的,因为如果这些工作是分配的话不同(更均匀)他们会尽快完成?我是否需要担心这种情况?
如果我的担心是真实的,那么我该如何在C#中控制它?