使用以下代码段:
const arr = [1.1, 2.2, 3.3]
const arrBuffer = (Float32Array.from(arr)).buffer
一个人如何将这个ArrayBuffer投射到SharedArrayBuffer?
const sharedArrBuffer = ...?
答案 0 :(得分:1)
请注意,ArrayBuffer
和SharedArrayBuffer
都支持仅通过类型化数组(例如,在您的示例中为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,则需要复制其内容。)