我有一个处理图像的多线程程序,我想在程序中创建一个队列,用于插入来自此队列中外部程序的请求,并且图像处理器的线程将请求从队列中取出。现在,当队列已满并且新请求到达时,最佳解决方案是什么?我应该丢弃新的或旧的或随机的请求吗?
答案 0 :(得分:0)
这完全取决于您以及您希望程序的行为方式。看看每个决定的结果可能会导致什么是较小的邪恶。
答案 1 :(得分:0)
我建议使用message broker来实现此方法。
您可以将图像作为消息发送到此代理,该代理将处理到目标程序的路由,完整的排队系统以及“完整队列”问题。
我个人已经使用RabbitMQ获得了一些很好的经验,尽管这可能会为您的特殊目的带来一点开销。你可能会看一下ZeroMQ,它可能会更薄一些,也是一种更好的方法。
要做正确的事情,确定你真正需要的是什么,并检查这些消息经纪人是否真的对你当前的情况有用 - 从我的观点和我认为它们是,但取决于你的确切要求和实施。 / p>
如果您有兴趣查看AMQP,即高级消息队列协议本身 - 它是所有这些消息代理的基础,非常有趣。