gpt4 book ai didi

javascript - Javascript 中是否可能存在竞争条件? (例如 : I want to get and set value atomically)

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

我做了很多搜索,但仍然无法弄清楚。

很简单,一个全局变量的初始值为false

var globalVar = false;

setTimeout 两次调用同一个函数:

function(){
if(!globalVar){
globalVar = true;
alert('show only once');
}
}

那么 alert 只调用一次吗?或者竞争条件是可能的?

最佳答案

不是你的情况。 Javascript 在单线程环境中运行。您的一个超时将在另一个能够执行之前完全执行,这意味着当另一个执行时,它将看到 globalVartrue

唯一可能发生的并发问题是您等待 IO、超时或类似情况。到那时,允许执行其他 javascript。没有代码会为了执行而中断其他代码。

例如:

setTimeout(function () { alert('hi!'); }, 1000);
while(true) {}

您永远不会看到警报,因为 while 循环会忙于等待,为其他代码占用 javascript 线程,并且永远不会给超时执行机会。

关于javascript - Javascript 中是否可能存在竞争条件? (例如 : I want to get and set value atomically),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26900435/

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