繁体   English   中英

Java中是否可能存在竞争条件? (例如:我想自动获取并设置值)

[英]Is race condition possible in Javascript? (e.g.: I want to get and set value atomically)

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

很简单,全局变量的初始值为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是单线程的,所以我认为这是不可能的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM