![](/img/trans.png)
[英]Binary string to ArrayBuffer/TypedArray in JavaScript
[英]Is there a way to create a TypedArray from an ArrayBuffer without using new keyword in Javascript?
我正在使用 transferables 在主線程和工作線程之間進行通信。 我意識到通信會創建 GC 活動,因為在收到緩沖區后,我使用 new 關鍵字將緩沖區轉換為類型化數組:
var ary = new Float32Array(buffer);
有沒有辦法在不創建 GC 活動的情況下重用 TypedArray 或獲取緩沖區的視圖?
我認為沒有,沒有。 ArrayBuffer
幾乎是一個黑盒子,沒有類型化數組或DataView
可以查看它,並且您無法更改現有類型化數組或DataView
上的緩沖區。
在支持它的平台上,您可以創建一個主線程和工作線程都可以訪問的SharedArrayBuffer
,這不會有 GC 問題,因為每一方都會重用其包裝器數組。 只需確保您通過postMessage
或Atomics
訪問它(更多關於此問題的答案)。
但遺憾的是,大多數瀏覽器都禁用了SharedArrayBuffer
以響應 Spectre,最后我檢查的只有 Chrome 重新啟用了它(在啟用了站點隔離功能的平台上)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.