SharedArrayBuffer

简介: SharedArrayBuffer

MDN 文档

简单解释: SharedArrayBuffer 对象用来表示一个通用的,固定长度的原始二进制数据缓冲区,类似于 ArrayBuffer 对象,它们都可以用来在共享内存(shared memory)上创建视图。与 ArrayBuffer 不同的是,SharedArrayBuffer 不能被分离。


注意

作为对Spectre的响应,所有主流浏览器均默认于2018年1月5日禁用SharedArrayBufferChrome 在启用了网站隔离功能的平台上的v67中重新启用了该功能,以防止出现 Spectre 风格的漏洞。


示例

const buffer = new SharedArrayBuffer(8);
console.log(buffer.byteLength); // 8


语法

new SharedArrayBuffer(length)


参数

  • length

所创建的数组缓冲区的大小,以字节(byte)为单位。


返回值

一个大小指定的新 SharedArrayBuffer 对象。其内容被初始化为 0。


作用

分配及共享内存

为了将一个 SharedArrayBuffer 对象从一个用户代理共享到另一个用户代理(另一个页面的主进程或者当前页面的一个 worker )从而实现共享内存,我们需要运用 postMessage结构化克隆算法structured cloning )。


结构化克隆算法接收被映射到一个新的 SharedArrayBuffers 对象上的 SharedArrayBuffers 对象与 TypedArrays 对象。在这两种映射下,这个新的 SharedArrayBuffer 对象会被传递到目标用户代理的接收函数上,导致在目标用户代理产生了一个新的私有 SharedArrayBuffer 对象(正如 ArrayBuffer 一样)。然而,这两个 SharedArrayBuffer 对象指向的共享数据块其实是同一个,并且在某一代理中的一个块的副作用将最终导致另一个代理具有可见性。

目录
相关文章
|
8月前
|
网络协议 数据安全/隐私保护 Docker
Docker 镜像库国内加速的几种方法
Docker 镜像库国内加速的几种方法
|
8月前
|
网络协议 关系型数据库 Linux
Linux系统中如何开启和配置OpenGauss数据库的远程连接
openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核深度融合华为在数据库领域多年的经验,结合企业级场景需求,持续构建竞争力特性.
|
8月前
|
前端开发
使用ffmpeg-core的时候报错,解决Uncaught (in promise) ReferenceError: SharedArrayBuffer is not defined
使用ffmpeg-core的时候报错,解决Uncaught (in promise) ReferenceError: SharedArrayBuffer is not defined
|
编解码 API 数据安全/隐私保护
FFmpeg中overlay滤镜用法-水印及画中画
overlay 技术又称视频叠加技术。overlay 视频技术使用非常广泛,常见的例子有,电视屏幕右上角显示的电视台台标,以及画中画功能。画中画是指在一个大的视频播放窗口中还存在一个小播放窗口,两个窗口不同的视频内容同时播放。
2071 0
FFmpeg中overlay滤镜用法-水印及画中画
|
3月前
|
机器学习/深度学习 人工智能 数据挖掘
阿里云云工开物助力高校的高校计划有什么用
阿里云“云工开物”高校计划旨在推动云计算技术在高校的普及与应用,通过提供云计算资源、算力支持、在线学习平台、开发者社区及数据科学竞赛等,帮助大学生提升实践能力和创新思维,培养更多创新型人才,促进校企合作。
352 2
|
4月前
|
XML 移动开发 前端开发
HTML5 SVG和canvas的性能探讨
HTML5 中的 SVG(可缩放矢量图形)和 Canvas(画布)分别用于网页图形绘制。SVG 基于矢量图形,使用 XML 描述,适合静态或少量动态内容(如图标、图表),易于编辑且保持高分辨率;Canvas 则基于位图,通过 JavaScript 绘制,更适合快速更新大量图形的场景(如游戏、动态动画),但在复杂图形计算时可能遇到性能瓶颈。总体而言,SVG 适用于静态和少量动态内容,而 Canvas 更适合高频率更新和性能要求高的场景。
|
5月前
|
开发框架
threejs做特效:实现物体的发光效果-EffectComposer详解!
【8月更文挑战第7天】实现物体的发光效果-EffectComposer详解!
667 6
threejs做特效:实现物体的发光效果-EffectComposer详解!
|
5月前
|
Ubuntu 应用服务中间件 Linux
在Linux中,如何查看Apache或Nginx服务的状态?
在Linux中,如何查看Apache或Nginx服务的状态?
|
7月前
|
JavaScript 前端开发 算法
Box2D(现在通常称为Box2D.js或者其WebAssembly版本,Emscripten Box2D)是一个流行的2D物理引擎,用于模拟刚体动力学、碰撞检测与响应以及关节约束等物理现象
【6月更文挑战第16天】Box2D.js,基于C++的2D物理引擎,经Emscripten编译为WebAssembly,用于JavaScript游戏中的真实物理模拟,包含碰撞检测和关节约束。它提供高效的碰撞检测,易于扩展和定制物理属性。使用步骤涉及初始化世界、创建刚体、添加碰撞形状、模拟物理及处理碰撞事件。物理引擎虽提升逼真度,但也增加复杂性和性能需求。其他选项如p2.js、matter.js和ammo.js也可供选择。
197 8