与工作人员共享 SharedArrayBuffer 的 TypedArray 视图 - 完整的 SharedArrayBuffer 是否可访问?

问题描述 投票:0回答:1

如果我创建一个

SharedArrayBuffer
,然后通过
TypedArray
创建所述缓冲区的“视图”,然后通过
TypedArray
Worker
发送到
postMessage
,工作人员是否能够访问完整的
TypedArray
的数据?

web-worker sharedarraybuffer
1个回答
0
投票

是的,完整的底层缓冲区与 Web Worker 共享:

<!-- test.html -->
<script>
  // Main thread
  const sharedBuffer = new SharedArrayBuffer(100); 
  const fullBuffer = new Uint8Array(sharedBuffer);
  fullBuffer.set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); // Fill the start of the buffer with some data
  const partOfBuffer = new Uint8Array(sharedBuffer, 5); // Create a view that leaves off the first few numbers

  const worker = new Worker('worker.js');
  worker.postMessage(partOfBuffer);
</script>
// worker.js
onmessage = function(e) {
  const partOfBuffer = e.data;
  console.log(new Uint8Array(partOfBuffer.buffer)); // logs the full buffer data - i.e. including the first few numbers
}
© www.soinside.com 2019 - 2024. All rights reserved.