현재 번역은 완벽하지 않습니다. 한국어로 문서 번역에 동참해주세요.

SharedArrayBuffer 객체는  ArrayBuffer를 표현하는 객체입니다, 하지만 SharedArrayBuffer는 ArrayBuffer과 달리 공유되는 메모리의 뷰를 생성할 때 사용될 수 있습니다, SharedArrayBuffer은 분리될 수 없습니다.

Syntax

new SharedArrayBuffer(length)

Prameters

length
생성될 ArrayBuffer의 바이트 크기.

Return value

크기가 지정된 SharedArrayBuffer 객체의 내용물은 0으로 초기화 되있습니다.

Description

할당 및 메모리 공유

SharedArrayBuffer객체를 통해 메모리를 하나의 agent(agent는 웹 페이지의 메인 프로그램 또는 그것의 웹 워커 중 하나입니다.)와 다른 agent에서 공유를 하기 위해, postMessagestructured cloning 이 사용됩니다.

structured clone 알고리즘은 SharedArrayBufferSharedArrayBuffer 위에 맵핑된 TypedArray 을 받아들입니다.어쨋든, 이 두 경우 모두,SharedArrayBuffer 객체는 새로운 버퍼를 생성할 리시버에게 전달됩니다, private SharedArrayBuffer object in the receiving agent (just as for ArrayBuffer).두 개의 SharedArrayBuffer 에 의해 참조되는 데이터 블록은 같은 블록입니다,또한 부수적인 효과로, 다른 agent가 또 다른 agent의 블록을 볼 수 있게 됩니다.

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

공유된 메모리를 Atomic operation으로 수정 및 동기화 하는 방법

공유 메모리는 워커나 메인 스레드에서 동시에 수정 및 생성될 수 있습니다.또한,시스템(CPU, OS,브라우저)에 의존하는 것은 변경사항이 전체 컨텍스트가 이를 반영하기까지에 시간이 걸립니다.그렇기에 동기화를 위해,atomic 연산이 필요합니다.

SharedArrayBuffer 객체를 사용할 수 있는 API들

SharedArrayBuffer 생성자는 new 연산자를 필수로 합니다.

SharedArrayBuffer  생성자는 객체를 생성할 때, new 연산자가 필수 입니다. SharedArrayBuffer 생성자를 new 없이 함수로써 호출을 하면, TypeError 를 일으킬 것 입니다.

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

Properties

SharedArrayBuffer.length
 값이 1인 SharedArrayBuffer 생성자의 length 프로퍼티 입니다.
SharedArrayBuffer.prototype
모든 SharedArrayBuffer 객체에 프로퍼티 추가를 가능하게 해줍니다..

SharedArrayBuffer prototype object

모든 SharedArrayBuffer 인스턴스는 SharedArrayBuffer.prototype 를 상속합니다.

Properties

SharedArrayBuffer.prototype.constructor
Specifies the function that creates an object's prototype. The initial value is the standard built-in SharedArrayBuffer constructor.
SharedArrayBuffer.prototype.byteLength Read only
The size, in bytes, of the array. This is established when the array is constructed and cannot be changed. Read only.

Methods

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. If either begin or end is negative, it refers to an index from the end of the array, as opposed to from the beginning.

Specifications

Specification Status Comment
ECMAScript Latest Draft (ECMA-262)
The definition of 'SharedArrayBuffer' in that specification.
Draft Initial definition in ES2017.
ECMAScript 2017 (ECMA-262)
The definition of 'SharedArrayBuffer' in that specification.
Standard  

Browser compatibility

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support601 No2

573 4

55 — 57

46 — 555

No No10.1 —?
SharedArrayBuffer in DataView601 No2

573 4

55 — 57

46 — 555

No No10.1 —?
prototype601 No2

573 4

55 — 57

46 — 555

No No10.1 —?
byteLength601 No2

573 4

55 — 57

46 — 555

No No10.1 —?
slice601 No2

573 4

55 — 57

46 — 555

No No10.1 —?
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support601601 ?

573 4

55 — 57

46 — 555

No No No
SharedArrayBuffer in DataView601601 ?

573 4

55 — 57

46 — 555

No No No
prototype601601 ?

573 4

55 — 57

46 — 555

No No No
byteLength601601 ?

573 4

55 — 57

46 — 555

No No No
slice601601 ?

573 4

55 — 57

46 — 555

No No No

1. Chrome disabled SharedArrayBuffer on January 5, 2018 to help reduce the efficacy of speculative side-channel attacks. This is intended as a temporary measure until other mitigations are in place.

2. Support was removed to mitigate speculative execution side-channel attacks (Windows blog).

3. Support was disabled by default to mitigate speculative execution side-channel attacks (Mozilla Security Blog).

4. From version 57: this feature is behind the javascript.options.shared_memory preference (needs to be set to true). To change preferences in Firefox, visit about:config.

5. From version 46 until version 55 (exclusive): this feature is behind the javascript.options.shared_memory preference (needs to be set to true). To change preferences in Firefox, visit about:config.

See also

문서 태그 및 공헌자

이 페이지의 공헌자: ENvironmentSet
최종 변경: ENvironmentSet,