在JavaScript中增量是一个原子操作吗?

时间:2017-03-30 11:03:21

标签: javascript multithreading thread-safety atomic

在JavaScript中增加原子操作吗?如果一个线程正在访问 ++i;同时另一个人开始访问该操作会有任何问题吗?

4 个答案:

答案 0 :(得分:5)

在Javascript中总是一个函数运行到完成,这意味着如果一个函数正在运行而不是它将完全运行,只有在那之后才会调用另一个函数,所以,没有机会在语句之间进行交错(但是在java的情况下)是不同的),如果你对异步执行感到困惑而不是总是记得async意味着以后不并行,那么,来你的问题,答案是,不,你不会遇到任何问题,它将是全原子操作。

答案 1 :(得分:1)

Javascript是单线程的,所以你需要担心deallocks或脏读问题。 Why doesn't JavaScript support multithreading?

答案 2 :(得分:1)

是的,会有问题。即使Javascript是单线程的,i ++也可以执行(编写器+修改+编写)三步操作,因此,当任何人使用i变量时,另一个人都可以将修改后的i设置为变量区域。为了解决此问题,可以使用原子变量而不是常规变量。

答案 3 :(得分:0)

Javascript不支持多线程。它可能有网络工作者,但你的问题不适用于这种情况,因为工人不共享变量。