簡體   English   中英

有沒有辦法從 ArrayBuffer 創建 TypedArray 而不在 Javascript 中使用 new 關鍵字?

[英]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 問題,因為每一方都會重用其包裝器數組。 只需確保您通過postMessageAtomics訪問它(更多關於此問題的答案)。

但遺憾的是,大多數瀏覽器都禁用了SharedArrayBuffer以響應 Spectre,最后我檢查的只有 Chrome 重新啟用了它(在啟用了站點隔離功能的平台上)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM