gpt4 book ai didi

javascript - 避免 JS 反向单链表中的竞争条件

转载 作者:行者123 更新时间:2023-11-30 10:34:24 25 4
gpt4 key购买 nike

我正在研究 Javascript 反向单链表实现。也就是说,一个链表不是由存储头对象的变量引用,它包含指向下一个对象的链接等等,而是存储在引用列表最后一个节点的尾变量中,每个节点都包含一个链接到上一个节点。实现要点如下:

// A reversed linked list of the sequence 1, 2, 3
var tail = {
value: 3,
previous: {
value: 2,
previous: {
value: 1,
previous: null
}
}
};

将新节点推送到此列表 (tail) 末尾的代码如下所示:

tail = {
value: 4,
previous: tail
};

这是一个演示:http://jsbin.com/ajixip/1/

我预见到此推送的问题是在检索 tail 的当前值之间可能发生的竞争条件。并设置新值。

例如,考虑一个用户触发一个事件,该事件将一个新值推送到列表的尾部。让我们调用 tail 的值被检索并分配给键的时间 previous 时间 A,让我们将 tail 设置为新对象的时间点称为时间 B。如果在 时间 A时间 B 之间对列表进行了另一次推送,则其 previous将是 时间 A 的尾部,并假设它会在 时间 B 之后将自己分配给尾部,则第一个节点推送将丢失。

我对如何避免这种竞争条件感到困惑。我最初的想法是实现一个阻止并发推送的锁,但可能有一些聪明的 JS 魔法可以避免这种情况。有巫师愿意分享一些这种魔法吗?

谢谢!

最佳答案

由于 Javascript 不是多线程的,所以你给出的例子没有问题。就今天的所有意图和目的而言,这是一个原子操作。

关于javascript - 避免 JS 反向单链表中的竞争条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14907085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com