var i = 1;
function er() {
i++;
}
据我所知,i++
操作包括三个步骤。 Read-modify-write,当任何事件读取时(第一步),任何其他事件是否可以修改相同的i
值?读取后,在修改过程中,任何其他事件是否可以通过上下文切换获得修改权限?上下文切换如何工作?
最佳答案
Javascript (nodejs) 本质上是单线程的。一切都发生在回调、 promise 解决或定时器/间隔处理程序中,或在主程序中。这些东西不像在多线程环境中那样是可抢占的。
在 Javascript 中,上下文切换或线程切换无法生成潜在的竞争条件,从而破坏 i++
或任何其他读取-修改-写入操作的完整性。
该语言不需要由例如 C#'s Interlocked.Increment()
method 公开的互锁增量硬件操作.
关于node.js - 在 Node.js 中使用 i++ 时的全局变量安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62901295/