我已经看到了这种实现具有两个堆栈的队列的方式:https://stackoverflow.com/a/2050402/494094
我已经读过这种方式,队列是不可变的和线程安全的。将此与正常队列分开并使其成为不可变且线程安全的重点是什么?
如果有人能以简单,非专业的方式解释它,我真的很感激。
答案 0 :(得分:2)
How to implement a queue using two stacks?解释了更多并且有一些代码。
如果以低级方式执行此操作,则会有两个内存区域和两个指针 当你写的时候,一个指针递增,另一个指针在你读
时递增读取区域用完后,反转写入区域并交换两个区域。
因此,阅读不会干扰写作,反之亦然。这两个操作之间的唯一连接是在“反向和交换”操作期间,然后每个人都必须等待。