This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

SharedArrayBuffer

Baseline Widely available *

This feature is well established and works across many devices and browser versions. Itโ€™s been available across browsers since โจ2021๋…„ 12์›”โฉ.

* Some parts of this feature may have varying levels of support.

SharedArrayBuffer ๊ฐ์ฒด๋Š” ์ œ๋„ค๋ฆญ, ๊ณ ์ •๋œ ๊ธธ์ด์˜ ์›์‹œ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ ๋ฒ„ํผ๋ฅผ ํ‘œํ˜„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ArrayBuffer ๊ฐ์ฒด์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ๊ณต์œ ๋œ ๋ฉ”๋ชจ๋ฆฌ์ƒ์˜ ๋ทฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ArrayBuffer ์™€๋Š” ๋‹ฌ๋ฆฌ, SharedArrayBuffer ๋Š” ๋ถ„๋ฆฌ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ : Spectre ์—๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ 2018๋…„ 1์›” 5์ผ์— SharedArrayBuffer ๋Š” ๋ชจ๋“  ์ฃผ์š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋˜์–ด์žˆ์Œ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”. Chrome ์€ ์‚ฌ์ดํŠธ ๊ฒฉ๋ฆฌ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ Spectre ์Šคํƒ€์ผ ์ทจ์•ฝ์ ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธ๋  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์ƒ์˜ v67 ์—์„œ ์ด๋ฅผ ๋‹ค์‹œ ํ™œ์„ฑํ™”ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์‹œ๋„ํ•ด ๋ณด๊ธฐ

// Create a SharedArrayBuffer with a size in bytes
const buffer = new SharedArrayBuffer(8);

console.log(buffer.byteLength);
// Expected output: 8

๊ตฌ๋ฌธ

js
new SharedArrayBuffer(length);

ํŒŒ๋ผ๋ฏธํ„ฐ

length

์ƒ์„ฑํ•  array buffer ์˜ ๋ฐ”์ดํŠธ ํฌ๊ธฐ.

๋ฐ˜ํ™˜ ๊ฐ’

ํฌ๊ธฐ๊ฐ€ ์ง€์ •๋œ ์ƒˆ๋กœ์šด SharedArrayBuffer ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ์ปจํ…์ธ ๋Š” 0 ์œผ๋กœ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.

์„ค๋ช…

ํ• ๋‹น ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ๊ณต์œ 

SharedArrayBuffer ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•˜๋‚˜์˜ agent(agent ๋Š” ์›น ํŽ˜์ด์ง€์˜ ๋ฉ”์ธ ํ”„๋กœ๊ทธ๋žจ ๋˜๋Š” ์›น ์›Œ์ปค ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค)์™€ ๋‹ค๋ฅธ agent ์—์„œ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด, postMessage ์™€ structured cloning ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Structured clone ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ SharedArrayBuffer ์™€ SharedArrayBuffer ์ƒ์— ๋งตํ•‘๋œ TypedArray ๋ฅผ ๋ฐ›์•„๋“ค์ž…๋‹ˆ๋‹ค. ์ด ๋‘ ๊ฒฝ์šฐ์—์„œ, SharedArrayBuffer ๊ฐ์ฒด๋Š” ์ˆ˜์‹ ์ž(receiver)์—๊ฒŒ ์ „๋‹ฌ๋˜์–ด ์ˆ˜์‹  agent(์˜ˆ, ArrayBuffer)์˜ ์ƒˆ๋กœ์šด ๋น„๊ณต๊ฐœ์˜ SharedArrayBuffer ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋‘ SharedArrayBuffer ์— ์˜ํ•ด ์ฐธ์กฐ๋˜๋Š” ๊ณต์œ  ๋ฐ์ดํ„ฐ ๋ธ”๋ก์€ ๊ฐ™์€ ๋ธ”๋ก์ด๋ฉฐ, ๋ถ€์ˆ˜์ ์ธ ํšจ๊ณผ๋กœ, ํ•˜๋‚˜์˜ agent ๊ฐ€ ๋‹ค๋ฅธ agent ์—์„œ ๋ณด์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

js
var sab = new SharedArrayBuffer(1024);
worker.postMessage(sab);

Atomic operation ์œผ๋กœ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ์ˆ˜์ • ๋ฐ ๋™๊ธฐํ™”

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋Š” ์›Œ์ปค๋‚˜ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ๋™์‹œ์— ์ˆ˜์ • ๋ฐ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ(CPU, OS, ๋ธŒ๋ผ์šฐ์ €)์—๋”ฐ๋ผ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์ „์ฒด ์ปจํ…์ŠคํŠธ๋กœ ์ „ํŒŒ๋ ๋•Œ๊นŒ์ง€ ์•ฝ๊ฐ„์˜ ์‹œ๊ฐ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•ด์„ , atomic ์—ฐ์‚ฐ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

SharedArrayBuffer ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” API

์ƒ์„ฑ์ž๋Š” new ์—ฐ์‚ฐ์ž๋ฅผ ํ•„์š”๋กœ ํ•จ

SharedArrayBuffer ์ƒ์„ฑ์ž๋Š” ์ƒ์„ฑ๋  ๋•Œ, new ์—ฐ์‚ฐ์ž๋ฅผ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค. SharedArrayBuffer ์ƒ์„ฑ์ž๋ฅผ new ์—†์ด ํ•จ์ˆ˜๋กœ์จ ํ˜ธ์ถœํ•˜๋ฉด, TypeError ๋ฅผ ์ผ์œผํ‚ฌ ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

js
var sab = SharedArrayBuffer(1024);
// TypeError: calling a builtin SharedArrayBuffer constructor
// without new is forbidden
js
var sab = new SharedArrayBuffer(1024);

์†์„ฑ

SharedArrayBuffer.length

๊ฐ’์ด 1์ธ SharedArrayBuffer ์ƒ์„ฑ์ž์˜ length ์†์„ฑ์ž…๋‹ˆ๋‹ค.

SharedArrayBuffer.prototype

๋ชจ๋“  SharedArrayBuffer ๊ฐ์ฒด์— ํ”„๋กœํผํ‹ฐ ์ถ”๊ฐ€๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

SharedArrayBuffer prototype ๊ฐ์ฒด

๋ชจ๋“  SharedArrayBuffer ์ธ์Šคํ„ด์Šค๋Š” SharedArrayBuffer.prototype ๋ฅผ ์ƒ์†ํ•ฉ๋‹ˆ๋‹ค.

์†์„ฑ

SharedArrayBuffer.prototype.byteLength

๋ฐฐ์—ด์˜ ํฌ๊ธฐ (๋ฐ”์ดํŠธ)์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฐฐ์—ด์ด ๊ตฌ์„ฑ ๋  ๋•Œ ์„ค์ •๋˜๋ฉฐ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ฝ๊ธฐ ์ „์šฉ์ž…๋‹ˆ๋‹ค.

๋ฉ”์†Œ๋“œ

SharedArrayBuffer.prototype.slice(begin, end)

Returns a new SharedArrayBuffer whose contents are a copy of this SharedArrayBuffer's bytes from begin, inclusive, up to end, exclusive. begin ๋˜๋Š” end ์ค‘ ํ•˜๋‚˜๊ฐ€ ์Œ์ˆ˜์ด๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฐฐ์—ด ๋์˜ ์ธ๋ฑ์Šค๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.

๋ช…์„ธ

Specification
ECMAScriptยฎ 2026 Language Specification
# sec-sharedarraybuffer-objects

๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ

ํ•จ๊ป˜ ๋ณด๊ธฐ