javascript - 如何在 Javascript 中将 `ArrayBuffer` 转换为 `SharedArrayBuffer`?

标签 javascript node.js arraybuffer typed-arrays sharedarraybuffer

采用以下代码段:

const arr = [1.1, 2.2, 3.3]
const arrBuffer = (Float32Array.from(arr)).buffer

如何转换这个 ArrayBufferSharedArrayBuffer

const sharedArrBuffer = ...?

最佳答案

请注意,ArrayBufferSharedArrayBuffer 都是后备数据指针,您只能通过类型化数组(如示例中的 Float32Array)与之交互。数组缓冲区表示内存分配,不能“强制转换”(只能用类型化数组表示)。

如果您已经一个类型化数组,并且需要将它复制到一个新的 SharedArrayBuffer 中,您可以使用 set 来完成:

// Create a shared float array big enough for 256 floats
let sharedFloats = new Float32Array(new SharedArrayBuffer(1024));

// Copy floats from existing array into this buffer
// existingArray can be a typed array or plain javascript array
sharedFloats.set(existingArray, 0);

(通常,您可以拥有一个数组缓冲区并通过多个“类型化镜头”与其交互 - 因此,基本上,将数组缓冲区转换为不同的类型,例如 Float32 和 Uint8。但是您不能转换 ArrayBuffer到 SharedArrayBuffer,你需要复制它的内容。)

关于javascript - 如何在 Javascript 中将 `ArrayBuffer` 转换为 `SharedArrayBuffer`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54112373/

相关文章:

c++ - 通过Tor服务的C++ socket.io客户端

javascript - 从 blob url 读取数据

javascript - 在React中的ArrayBuffer中显示PNG图像

javascript - HTML5地理定位中的经纬度半径

javascript - 数组赋值中的引用错误(左手赋值)

javascript - 附加div内容jquery

javascript - 浏览器如何存储 Etag 以及存储多长时间?

node.js - NodeJS 和 Socket.IO 来跟踪用户访问时间 高性能

javascript - Hapi.js -- 设置 X-Authorization header

javascript - Buffer + writeUInt32LE 从 NodeJS 到 Javascript