为什么这个具有两个堆栈的队列的实现是不可变的和线程安全的?

时间:2011-12-02 14:00:03

标签: thread-safety stack queue immutability

我已经看到了这种实现具有两个堆栈的队列的方式:https://stackoverflow.com/a/2050402/494094

我已经读过这种方式,队列是不可变的和线程安全的。将此与正常队列分开并使其成为不可变且线程安全的重点是什么?

如果有人能以简单,非专业的方式解释它,我真的很感激。

1 个答案:

答案 0 :(得分:2)

How to implement a queue using two stacks?解释了更多并且有一些代码。

如果以低级方式执行此操作,则会有两个内存区域和两个指针 当你写的时候,一个指针递增,另一个指针在你读

时递增

读取区域用完后,反转写入区域并交换两个区域。

因此,阅读不会干扰写作,反之亦然。这两个操作之间的唯一连接是在“反向和交换”操作期间,然后每个人都必须等待。