我有一组任务,其中一些任务比其他任务更重要
每个任务在一个或多个数据库上做一些工作。
这些任务分配给将执行任务的工作人员(应用程序中的线程轮询表)。
当工作人员完成任务后,它会将值设置回 null 以表示它可以再次接受工作。
在将任务分配给工作人员时,我想对可以在任何时候使用的数据库连接数施加上限 - 因此使用当前处于其限制的数据库的任务将不会分配给工人。
我可以通过从数据库限制中减去当前分配给工作人员的任务数据库来获得可用的数据库连接数。
我的问题是,如何根据可用的数据库连接数按重要性顺序选择可以运行的任务,而不是逐行执行?
我希望下面的例子能说明我的问题:
右边是可用的数据库连接,随着我们按重要性顺序向下排列任务列表,它会减少。
如果我按照任务的重要性顺序选择它们,那么可用于下一个任务的连接取决于是否选择了前一个任务,这取决于是否有空间用于所有数据库连接。
在上述情况下,任务 7 只能运行,因为任务 6 不能
任务 8 也无法运行,因为任务 5 使用了与数据库 C 的最后一个连接,因为它是一项更重要的任务。
问题:
有没有办法在不使用while循环并逐行执行的情况下解决这个问题?