Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
增量是JavaScript中的原子操作吗?_Javascript_Multithreading_Thread Safety_Atomic - Fatal编程技术网

增量是JavaScript中的原子操作吗?

增量是JavaScript中的原子操作吗?,javascript,multithreading,thread-safety,atomic,Javascript,Multithreading,Thread Safety,Atomic,增量是JavaScript中的原子操作吗?如果一个线程正在访问 ++i同时另一个用户开始访问该操作是否会出现任何问题?Javascript不支持多线程。它可能有web workers,但您的问题不适用于这种情况,因为workers不共享变量。Javascript是单线程的,所以您需要担心释放锁或脏读问题。 在Javascript中,函数总是运行到完成,这意味着如果一个函数正在运行,那么它将完全运行,只有在调用另一个函数之后,语句之间才有可能交错(但在java中则不同),如果您对异步执行感到困惑,

增量是JavaScript中的原子操作吗?如果一个线程正在访问
++i
同时另一个用户开始访问该操作是否会出现任何问题?

Javascript不支持多线程。它可能有web workers,但您的问题不适用于这种情况,因为workers不共享变量。

Javascript是单线程的,所以您需要担心释放锁或脏读问题。

在Javascript中,函数总是运行到完成,这意味着如果一个函数正在运行,那么它将完全运行,只有在调用另一个函数之后,语句之间才有可能交错(但在java中则不同),如果您对异步执行感到困惑,请记住异步意味着以后不再并行,因此,对于您的问题,答案是:不,您不会面临任何问题,这将是完全的原子操作。

是的,会有问题。即使Javascript是单线程的,i++也是(writer+modify+write)3步操作,因此当任何人使用i变量时,另一个人可以将修改后的i设置为变量区域。为了解决这个问题,可以使用原子变量而不是正则变量

JS中没有线程。JavaScript没有线程。它确实有工人(如果你在正确的环境中)可以通过消息总线进行通信。那么发电机的功能呢?当然,您可以在生成器功能结束之前退出它!