multithreading - FIFO队列的共识数量

标签 multithreading concurrency queue consensus

多出队队列的确切共识数是多少?

我知道它是 至少 2 :queue.enq(1)queue.enq(0)线程 A 和 B 各自调用 queue.deq()
得到 1 的线程将返回它自己的值。
得到 0 的线程将返回另一个的值。

但是我如何证明它是 正好是 2
我想我应该只使用 2-consensus 对象来实现一个队列,但我没能做到。

最佳答案

我认为 Adar Hefer's 答案是正确的。我仍然认为,个人意见,这些正式的答案很痛苦。

作为非正式的回答。如果您必须使用 FIFO 队列在多个线程上达成共识,您会怎么做?所以你可以存储三个或更多的建议,在这里没问题。比你能画吸管,要么赢,要么输,要么第二次输。还是没有问题。但是,您如何获得正确的“投票”值?对于 WIN,您只需获取您的 threadID,但您如何确保其他两个线程也都获得了获胜者的值(value)?如果您是一个失败的线程,从您的角度来看,您无法看到其他两个线程中的哪一个获胜。你所知道的是你已经失去了,应该采取其他建议的值(value)。赌一把,你可能会画对 - 你可能不会。

关于multithreading - FIFO队列的共识数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27303955/

相关文章:

multithreading - 树状结构中的多线程

Java Web 服务并发问题

ios - 使用 GCD 实现并发读独占写模型

Node.js 在没有集群的情况下在 ab 中好多了,我错过了什么?

java - 处理 java.net.SocketException

java - 如何设置 Spring Retry 模板重试最大次数 : infinite

java - 在无界线程池执行器中不执行所有线程的原因是什么

带有类元素的java队列

queue - 确定 Sun Grid 引擎队列上作业的优先级

java - 从 Java BlockingQueue 并发按顺序处理工作项