我们想使用 Riak 的 Links 来创建一个双向链表。
我相信它的算法非常简单:
- 让“N0”成为要插入的新元素
- 获取列表的头部,包括其“下一个”链接 (N1)
- 将 N1 的“前一个”设置为 N0。
- 将 N0 的“下一个”设置为 N1
- 将列表头部的“下一个”设置为 N0。
我们遇到的问题是这里有一个明显的竞争条件,因为如果 2 个并发客户端获得列表的头部,其中一个项目可能会“丢失”。有什么办法可以避免吗?
我们想使用 Riak 的 Links 来创建一个双向链表。
我相信它的算法非常简单:
我们遇到的问题是这里有一个明显的竞争条件,因为如果 2 个并发客户端获得列表的头部,其中一个项目可能会“丢失”。有什么办法可以避免吗?