在JavaScript中增加原子操作吗?如果一个线程正在访问
++i;
同时另一个人开始访问该操作会有任何问题吗?
答案 0 :(得分:5)
在Javascript中总是一个函数运行到完成,这意味着如果一个函数正在运行而不是它将完全运行,只有在那之后才会调用另一个函数,所以,没有机会在语句之间进行交错(但是在java的情况下)是不同的),如果你对异步执行感到困惑而不是总是记得async意味着以后不并行,那么,来你的问题,答案是,不,你不会遇到任何问题,它将是全原子操作。
答案 1 :(得分:1)
Javascript是单线程的,所以你需要担心deallocks或脏读问题。 Why doesn't JavaScript support multithreading?
答案 2 :(得分:1)
是的,会有问题。即使Javascript是单线程的,i ++也可以执行(编写器+修改+编写)三步操作,因此,当任何人使用i变量时,另一个人都可以将修改后的i设置为变量区域。为了解决此问题,可以使用原子变量而不是常规变量。
答案 3 :(得分:0)
Javascript不支持多线程。它可能有网络工作者,但你的问题不适用于这种情况,因为工人不共享变量。