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



采取以下代码片段:

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

如何将此 ArrayBuffer 转换为 SharedArrayBuffer?

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,你需要复制它的内容。

相关内容

  • 没有找到相关文章

最新更新