我在 SharedArrayBuffer 上遇到解码()问题。
代码:
var sharedArrayBuffer = new SharedArrayBuffer(2);
var uint8Array = new Uint8Array(sharedArrayBuffer);
uint8Array[0] = 20;
var decoder = new TextDecoder();
decoder.decode(uint8Array);
Run Code Online (Sandbox Code Playgroud)
错误:
Failed to execute 'decode' on 'TextDecoder': The provided ArrayBufferView value must not be shared.
Run Code Online (Sandbox Code Playgroud)
这里有一个规范警告开发人员有关此类内存的竞争条件。我可以以某种方式强制解码吗?我确信解码期间数据不会改变。或者有解决方法吗?
原因: 我想创建 Uint8Array 的单个副本并将其传递,而不通过 postmessage 复制(如果未指定可传输,则默认复制)到多个(> 3)IFrame(带有沙箱标记)。也许还有其他可能的解决方案?
javascript postmessage uint8array sharedarraybuffer textdecoder