我目前正在做一个项目,我正在寻找一种可以解决这种情况的技术:
有人在房间里等着参加许多测试中的一项。可以为每个人分配多个测试。每个测试可以在给定时间在一个或多个位置进行,但一次只能一个人在给定位置参加测试。
随机分配人员进行测试并最终完成测试相对简单,但我可以使用什么样的系统来让人们等待的时间相对相等?如果我只是随机分配他们,一个只需要参加一项测试的人可能会落后于必须参加 5 项测试的人。
我曾考虑让测试次数较少的人先进行测试,但我还没有测试过,而且似乎仍然不公平。为了增加复杂性,我添加了一个允许更改优先级的功能。
需要明确的是,这不是家庭作业。这个项目仍处于逻辑开发阶段,所以我还没有真正开始编程来比较不同的技术。我想到的最接近的事情是创建一个有点像线程池的系统,但我还没有找到任何详细描述线程池背后的技术的东西,而且似乎需要一点如果我直接使用线程池,开销仍然会遇到问题。我还研究了 C# Queue 类,但我还没有想到扩展其功能的方法。
有人有什么想法或建议吗?