Кратко
СкопированоОбъект, который содержит буфер фиксированной длины с бинарными данными. Используется для доступа к разделяемой памяти и не может быть откреплён от неё, в отличие от Array
. Является частью типизированного массива Typed
.
Типизированные массивы упрощают работу с тяжёлыми данными, например, видео, аудио и анимациями. Их часто используют с различными API — WebGL, Canvas 2D, XMLHttpRequest2 и так далее.
Пример
Скопированоconst sab = new SharedArrayBuffer(1024)worker.postMessage(sab)
const sab = new SharedArrayBuffer(1024) worker.postMessage(sab)
Как пишется
СкопированоВсегда используйте оператор new
для создания SharedArray
. В скобках указывают размер буфера в байтах. В качестве второго значения можно указать дополнительные свойства. Например, максимальный размер, до которого может увеличиться SharedArray
.
const buffer = new SharedArrayBuffer(8, { maxByteLength: 16 })buffer.grow(12)
const buffer = new SharedArrayBuffer(8, { maxByteLength: 16 }) buffer.grow(12)
Так как SharedArray
может работать сразу с несколькими тредами в памяти, его используют для Service Worker. В этом случае SharedArray
используют вместе с методом post
и алгоритмами структурированного клонирования.
Из-за рисков, связанных с информационной безопасностью, к SharedArray
не всегда стоит предоставлять глобальный доступ. Чтобы максимально обезопасить данные на сайте или в приложении, не забывайте про CORS (Cross-origin Resource Sharing, совместное использование ресурсов между разными источниками).
Свойства
Скопированоbyte
— размер буфера в байтах.Length constructor
— создаёт экземпляр объекта.growable
— увеличивается или нет длина буфера. Возвращаетtrue
илиfalse
.max
— максимальный размер, до которого может увеличитьсяByte Length SharedArray
.Buffer
Методы
Скопировано.grow
— расширяет размеры объекта( ) SharedArray
в байтах до установленного значения.Buffer .slice
— возвращает копию( ) SharedArray
с таким же количеством байтов, как оригинальный объект.Buffer
Как понять
СкопированоБуфер — пространство в памяти, где хранятся бинарные данные. Разделяемая память (shared memory) означает, что для чтения и записи информации из буфера обращаются не к ядру, а к отдельным сегментам памяти. Про память подробнее узнаете из статьи «Как устроена память».