0

因此,我正在验证新的运营管理系统,其中一个操作系统将选择列表发送到可扩展数量的手持设备。它使用消息发送这些,并且它们的选择列表可能包含重叠的作业。所以在我的虚拟世界中,我需要确保两个模拟人不会选择同一份工作——每当有人选择一份工作时,所有工作列表都会刷新,这样所选择的工作就不会再出现在其他人的手持设备上,但对我来说,消息仍在正在处理的队列中,所以我必须确保放弃该选项。

基本上我有一个带有互斥锁的巨大列表,“人”越多,我处理消息的速度就越慢,以至于我不再实时,这很糟糕,因为我不能实际上验证系统,因为我跟不上消息。(同一个岛上的两个人会认识到一个人会选择一个对象,而下一个人应该选择第二个项目,但我需要检查我将要选择的每一项工作,看看它是否已被某人认领否则已经)

我已经考虑过对列表进行本地化合并,但它实际上并没有解决在愚蠢的情况下无论如何都会破坏它的问题,大量的人在同一行工作。现在,这可能会让真实的人感到困惑,因为在现实生活中他们需要做同样的解决方案,但我很好奇目前公认的解决这个问题的“最佳”解决方案是什么。

PS - 我已经在 c++ 中实现了这个,它很快,足够快,在任何实际测试中我都“不需要”回答这个问题,更多的是因为我很好奇我在问。

提前致谢!

4

1 回答 1

0

我在设计“带有(一个)互斥锁的巨型列表”中看到了一个问题。如果列表大小和/或访问速率不受限制,您根本无法以同步方式提供整个列表。基础数学对你不利。所以我要做的是在每项工作上设置一个互斥标志。您无法阻止某个工作显示在某人的屏幕上,但您可以确保他收到一个优雅的“没有更多可用”错误,然后是更新的列表。如果您曾经想在非常受欢迎的演出中预订座位,您可能已经目睹了解决方案。

于 2013-01-28T12:11:18.927 回答