Есть ли способ создать TypedArray из ArrayBuffer без использования нового ключевого слова в Javascript? - PullRequest
2 голосов
/ 24 марта 2019

Я использую переносимые средства для связи между основным потоком и рабочим. Я понял, что связь создает активность GC, потому что после получения буфера я конвертирую буфер в типизированный массив, используя ключевое слово new:

var ary = new Float32Array(buffer);

Есть ли способ повторно использовать TypedArray или получить представление о буфере без создания действия GC?

1 Ответ

1 голос
/ 24 марта 2019

Не думаю, что нет, нет. ArrayBuffer - это почти черный ящик без типизированного массива или DataView для его просмотра, и вы не можете изменить буфер существующего типизированного массива или DataView.

На платформах, которые его поддерживают, вы можете создать SharedArrayBuffer, к которому имеют доступ как основной, так и рабочий поток, что не будет иметь проблемы с GC, поскольку каждая сторона будет повторно использовать свой массив-обертку. Просто убедитесь, что у вас есть доступ к нему через postMessage или Atomics (подробнее об этом в ответе на этот вопрос ).

Но, к сожалению, большинство браузеров отключили SharedArrayBuffer в ответ на Spectre, и в последний раз, когда я проверял, только Chrome повторно включил его (на платформах, где включена функция изоляции сайта).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...