JavaScript共享内存简介

共享内存是JavaScript的高级功能,线程(进程的当前执行部分)可以利用共享内存 。 共享内存意味着不必麻烦地在线程之间传递更新的数据,并且所有线程都可以访问和更新共享内存中的相同数据。

听起来不可爱吗? 好吧,差不多。 在本文中,我们将看到如何在JavaScript中使用共享内存以及如何确定这是否是您真正想要的。

共享内存的优缺点

我们使用网络工作者 在JavaScript中创建线程 。 Web Workers API允许我们创建可用于在后台执行代码的工作线程,以便主线程可以自由地继续其执行,并可能处理UI事件,从而确保不冻结UI。

工作线程与主线程并发运行 。 这样同时执行任务的不同部分可以节省时间。 您完成得更快,但是它也有自己的一系列问题。

确保每个线程都获得必要的资源并及时地相互通信本身就是一项任务,其中不幸可能导致令人惊讶的结果。 或者,如果一个线程正在改变数据,另外一个在同一时间阅读它 ,你认为什么其他线程将看到什么? 更新的还是旧的数据?

但是,网络工作者不是很容易搞砸。 在通过消息进行通信的过程中,彼此发送的数据不是原始的而是副本 ,这意味着它们不会共享相同的数据。 它们在需要时相互传递数据副本

但是共享很重要,并且多个线程可能还需要同时查看相同的数据并进行更改。 因此, 禁止共享是一个很大的禁忌 。 这是SharedArrayBuffer对象进入图片的地方。 这将使我们在多个线程之间共享二进制数据

而不是在线程之间传递数据副本,而是传递SharedArrayBuffer对象的副本 。 一个SharedArrayBuffer对象指向保存数据的内存

因此,即使在线程之间传递了SharedArrayBuffer的副本,它们都仍将指向保存原始数据的同一内存 。 因此,线程可以查看和更新​​同一内存中的数据

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值