Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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_Atomic - Fatal编程技术网

原子对象在JavaScript中做什么?

原子对象在JavaScript中做什么?,javascript,atomic,Javascript,Atomic,这是最新的 我无法理解原子对象如何在现实生活中使用,或者它们是否仅供内部使用(即根本不打算被调用) 原子对象在JavaScript中做什么?如何使用它们?此功能是在ECMAScript 2017中引入的Shared Memory和Atomics引入了一种新的内存模型,它允许多代理程序使用原子操作进行通信,即使在并行CPU上也能确保定义良好的执行顺序。此规范还包括有关对象的新静态方法:对象.值,对象.条目,以及对象.getOwnPropertyDescriptors 其主要思想是将某种多线程功能引

这是最新的

我无法理解原子对象如何在现实生活中使用,或者它们是否仅供内部使用(即根本不打算被调用)


原子对象在JavaScript中做什么?如何使用它们?

此功能是在ECMAScript 2017中引入的
Shared Memory
Atomics
引入了一种新的内存模型,它允许多代理程序使用原子操作进行通信,即使在并行CPU上也能确保定义良好的执行顺序。此规范还包括有关
对象
的新静态方法:
对象.值
对象.条目
,以及
对象.getOwnPropertyDescriptors

其主要思想是将某种多线程功能引入JavaScript,使JS开发人员能够在将来编写高性能并发程序,允许他们自己管理内存,而不是让JS引擎管理内存

这是由一种称为
SharedArrayBuffer
的新型全局对象完成的,该对象基本上将数据存储在共享内存空间中。因此,这些数据可以在主JS线程和web工作线程之间共享

只需使用
SharedArrayBuffer
,主线程和多个web工作线程即可立即访问数据

但是在线程之间共享内存可能会导致争用情况。为了帮助避免竞争条件,引入了
Atomics
global对象
Atomics
提供了在线程使用其数据时锁定共享内存的各种方法。它还提供了安全地更新共享内存中此类数据的方法

让我们等待一些新的抽象库,它将使用这些API的权利


还建议在ECMAScript中查看关于共享内存的信息

多线程编程的危险

  • 僵局
  • 不可预测的
    读写操作的顺序
  • 数据碎片
要解决前面的问题,我们能做什么

使用原子选项

Atomics对象作为静态方法提供原子操作,如添加、子和或、异或、加载、存储等。它们与SharedArrayBuffer对象一起使用

有关更多信息和一个好例子: 资料来源:

要获得良好的资源,请参阅第12章SharedArrayBuffer:

<代码>Phang,C.L.(2017)。现代JavaScript的有效指南:(ECMAScript 2017/ES 8)。庄立峰。


@AlexisTyler的精确副本:为什么你在这个问题上发布了悬赏,而不是在链接副本上?可能是的副本