概述`SharedArrayBuffer` 允许多个线程(Workers)共享内存并通过 `Atomics` 同步,适用于并行计算与低延迟通信。为防侧信道风险,浏览器要求站点处于跨源隔离(COOP/COEP)。示例与部署Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
// 主线程
const sab = new SharedArrayBuffer(4)
const view = new Int32Array(sab)
const worker = new Worker('/worker.js')
worker.postMessage(sab)
// worker.js 中
onmessage = e => {
const view = new Int32Array(e.data)
Atomics.store(view, 0, 123)
Atomics.notify(view, 0, 1)
}
// 同步等待(示意,注意避免阻塞)
Atomics.wait(view, 0, 0)
console.log(Atomics.load(view, 0))
工程建议资源策略:确保跨源资源具备 CORP/正确 CORS;避免第三方脚本破坏隔离。并发设计:合理拆分任务与内存布局;避免主线程阻塞与忙等。监控:记录失败率与隔离状态;在不满足隔离时回退到消息传递与复制。参考与验证MDN SharedArrayBuffer 文档:https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBufferChrome 跨源隔离说明:https://developer.chrome.com/docs/web-platform/coop-coep/web.dev 相关指南:https://web.dev/articles/cross-origin-isolation

发表评论 取消回复