【发布时间】:2012-01-11 13:10:49
【问题描述】:
我见过这种实现具有两个堆栈的队列的方式:https://stackoverflow.com/a/2050402/494094
我已经读到这样队列是不可变的和线程安全的。将它与普通队列分开并使其不可变和线程安全的重点是什么?
如果有人能以简单、非专业的方式解释,我将不胜感激。
【问题讨论】:
标签: thread-safety stack queue immutability
我见过这种实现具有两个堆栈的队列的方式:https://stackoverflow.com/a/2050402/494094
我已经读到这样队列是不可变的和线程安全的。将它与普通队列分开并使其不可变和线程安全的重点是什么?
如果有人能以简单、非专业的方式解释,我将不胜感激。
【问题讨论】:
标签: thread-safety stack queue immutability
How to implement a queue using two stacks?解释更多,有一些代码。
如果您以低级方式执行此操作,您将拥有两个内存区域和两个指针 一个指针在你写的时候递增,另一个在你读的时候递增
一旦读取区域用完,您将写入区域反转并交换两者。
因此,阅读不会干扰写作,反之亦然。这两个操作之间的唯一联系是在“反向和交换”操作期间,然后每个人都必须等待。
【讨论】: