如何在Javascript中将“ ArrayBuffer”转换为“ SharedArrayBuffer”?

时间:2019-01-09 14:29:14

标签: javascript node.js arraybuffer typed-arrays sharedarraybuffer

使用以下代码段:

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

一个人如何将这个ArrayBuffer投射到SharedArrayBuffer

const sharedArrBuffer = ...?

1 个答案:

答案 0 :(得分:1)

请注意,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,则需要复制其内容。)