Baseline Widely available *
SharedArrayBuffer
ãªãã¸ã§ã¯ãã¯ãä¸è¬çãªãçã®ãã¤ããªã¼ãã¼ã¿ãããã¡ã¼ã表ãããã«ä½¿ç¨ããã¾ããArrayBuffer
ãªãã¸ã§ã¯ãã¨ä¼¼ã¦ãã¾ããããã¡ãã¯å
±æã¡ã¢ãªã¼ä¸ã«ãã¥ã¼ãçæããããã«ä½¿ç¨ããã¾ããSharedArrayBuffer
ã¯ç§»è²å¯è½ãªãã¸ã§ã¯ãã§ã¯ããã¾ããããã®ç¹ã§ã¯ ArrayBuffer
ãç§»è²å¯è½ã§ããã®ã¨ã¯ç°ãªãã¾ãã
SharedArrayBuffer
ãªãã¸ã§ã¯ãã使ç¨ãã¦ãã¯ã©ã¹ã¿ã¼å
ã®ããã¨ã¼ã¸ã§ã³ãããå¥ã®ã¨ã¼ã¸ã§ã³ã (ã¨ã¼ã¸ã§ã³ãã¨ã¯ãã¦ã§ããã¼ã¸ã®ã¡ã¤ã³ããã°ã©ã ã¾ãã¯ãã®ã¦ã§ãã¯ã¼ã«ã¼ã®ã²ã¨ã¤) ã¸ãSharedArrayBuffer
ãªãã¸ã§ã¯ãã使ç¨ãã¦ã¡ã¢ãªã¼ãå
±æããããã«ãpostMessage
ã¨æ§é åè¤è£½ã使ç¨ãã¾ãã
æ§é åè¤è£½ã¢ã«ã´ãªãºã 㯠SharedArrayBuffer
ã¨ãSharedArrayBuffer
ã«ãããã³ã°ãããåä»ãé
åãåãå
¥ãã¾ããã©ã¡ãã®å ´åã SharedArrayBuffer
ãªãã¸ã§ã¯ãã¯åä¿¡è
ã«è»¢éããã¦ãåä¿¡å´ã®ã¨ã¼ã¸ã§ã³ãã§æ°ããªãã©ã¤ãã¼ãã® SharedArrayBuffer
ãªãã¸ã§ã¯ãã«ãªãã¾ãï¼ArrayBuffer
ã¨åãããã«ï¼ããããã2 ã¤ã® SharedArrayBuffer
ãªãã¸ã§ã¯ãããåç
§ãããå
±æãã¼ã¿ãããã¯ã¯åä¸ã®ãã¼ã¿ãããã¯ã§ãããããã¨ã¼ã¸ã§ã³ãã«ãããããã¯ã¸ã®å¯ä½ç¨ã¯ãçµæçã«ä»æ¹ã®ã¨ã¼ã¸ã§ã³ããããè¦ãã¾ãã
const sab = new SharedArrayBuffer(1024);
worker.postMessage(sab);
å ±æã¡ã¢ãªã¼ã¯ãã¯ã¼ã«ã¼å ã§ãã¡ã¤ã³ã¹ã¬ããå ã§ãåæã«çæãæ´æ°ãã§ãã¾ããã·ã¹ãã (CPUãOSããã©ã¦ã¶ã¼) ã«ãã£ã¦ã¯ã夿´ããã¹ã¦ã®ã³ã³ããã¹ãã«éç¥ãããã¾ã§ã«å°ã æéããããã¾ããåæããããã«ã¯ãä¸å¯åæä½ãå¿ è¦ã§ãã
SharedArrayBuffer
ãªãã¸ã§ã¯ãã¯ã以ä¸ã®ããã«ä¸é¨ã®ã¦ã§ã API ã§ä½¿ç¨ããã¦ãã¾ãã
WebGLRenderingContext.bufferData()
WebGLRenderingContext.bufferSubData()
WebGL2RenderingContext.getBufferSubData()
å ±æã¡ã¢ãªã¼ã¨é«è§£å度ã¿ã¤ãã¼ã¯ãSpectre ã®å¯¾çã¨ã㦠2018 å¹´ã®åãã«äºå®ä¸ç¡å¹åããã¾ããã 2020 å¹´ã«ã¯ãå ±æã¡ã¢ãªã¼ãåã³æå¹ã«ããããã«ãæ°ããå®å ¨ãªã¢ããã¼ããæ¨æºåããã¾ããã
å
±æã¡ã¢ãªã¼ã使ç¨ããã«ã¯ãææ¸ãä¿è·ãããã³ã³ããã¹ãå
ã«ããããªãªã¸ã³å士ãåé¢ããã¦ããå¿
è¦ãããã¾ãã Window.crossOriginIsolated
㨠WorkerGlobalScope.crossOriginIsolated
ã®ããããã£ã使ç¨ãã¦ãææ¸ã®ãªãªã¸ã³å士ãåé¢ããã¦ãããã©ããã調ã¹ããã¨ãã§ãã¾ãã
const myWorker = new Worker("worker.js");
if (crossOriginIsolated) {
const buffer = new SharedArrayBuffer(16);
myWorker.postMessage(buffer);
} else {
const buffer = new ArrayBuffer(16);
myWorker.postMessage(buffer);
}
ãªãªã¸ã³å士ãåé¢ããã¦ããå ´åã postMessage()
㯠SharedArrayBuffer
ãªãã¸ã§ã¯ãã«ä¾å¤ãçºçãããªããªããå¾ã£ã¦ã¹ã¬ããéã§ã®å
±æã¡ã¢ãªã¼ãå©ç¨ã§ããããã«ãªãã¾ãã
ä¸è¨ã®ã»ãã¥ãªãã£å¯¾çã®æç¡ã«ãããå種ã¡ã¢ãªã¼å ±æ API ã®å©ç¨å¯è½æ§ã¯ç°ãªãã¾ãã
Atomics
ãªãã¸ã§ã¯ãã¯å¸¸ã«å©ç¨ã§ãã¾ããSharedArrayBuffer
ãªãã¸ã§ã¯ãã¯ååã¨ãã¦å¸¸ã«å©ç¨ã§ãã¾ãããæ®å¿µãªãããã¦ã§ãã³ã³ãã³ãã¨ã®äºææ§ã®ããã«ãä¸è¨ã® 2 ã¤ã®ãããã¼ãè¨å®ããã¦ããªãéããã°ãã¼ãã«ãªãã¸ã§ã¯ãã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã¯é ããã¾ãããã®å¶éã¯å°æ¥çã«åãé¤ããããã¨ãæå¾
ããã¦ãã¾ããWebAssembly.Memory
ã¯ã¾ã ã¤ã³ã¹ã¿ã³ã¹ãåå¾ããããã«ä½¿ç¨ãããã¨ãã§ãã¾ããpostMessage()
API ã SharedArrayBuffer
ãªãã¸ã§ã¯ãã«å¯¾ãã¦ä¾å¤ãçºçãããã¨ã«ãªãã¾ããããããè¨å®ãããå ´åã¯ãWindow
ãªãã¸ã§ã¯ãã¨å°ç¨ã¯ã¼ã«ã¼ã® postMessage()
ãæ©è½ããã¡ã¢ãªã¼ãå
±æã§ããããã«ãªãã¾ããWebAssembly.Memory
ãªãã¸ã§ã¯ãã¯ãã³ã³ã¹ãã©ã¯ã¿ã¼ã® shared
ãã©ã°ã§ä½æãããã¨ãã§ãã¾ãããã®ãã©ã°ã true
ã«è¨å®ããã¨ãæ§ç¯ãããã¡ã¢ãªã¼ãªãã¸ã§ã¯ã㯠SharedArrayBuffer
ã¨åæ§ã« postMessage()
ãéãã¦ã¯ã¼ã«ã¼éã§å
±æã§ããã¡ã¢ãªã¼ãªãã¸ã§ã¯ãã®èå¾ã¨ãªã buffer
㯠SharedArrayBuffer
ã¨ãªãã¾ãããããã£ã¦ãã¯ã¼ã«ã¼éã§ SharedArrayBuffer
ãå
±æããããã®ä¸è¨ã®è¦ä»¶ã¯ãWebAssembly.Memory.Buffer
ãå
±æããå ´åã«ãå½ã¦ã¯ã¾ãã¾ãã
WebAssembly Threads ã®ææ¡ã§ã¯ãæ°ããä¸å¯åå½ä»¤ã®éåãå®ç¾©ããã¦ãã¾ãã SharedArrayBuffer
ã¨ãã®ã¡ã½ãããç¡æ¡ä»¶ã«æå¹ã§ããããã«ï¼ããã¦ã¹ã¬ããéã®å
±æã®ã¿ãæ°ãããããã¼ä¸ã§å¶éããã¾ãï¼ã WebAssembly ã®ä¸å¯åå½ä»¤ãç¡æ¡ä»¶ã«è¨±å¯ããã¾ãã
SharedArrayBuffer
ãªãã¸ã§ã¯ã㯠SharedArrayBuffer()
ã³ã³ã¹ãã©ã¯ã¿ã¼ãå¼ã³åºãéã« maxByteLength
ãªãã·ã§ã³ãå«ãããã¨ã§æé·å¯è½ã«ãããã¨ãã§ãã¾ããã¾ããSharedArrayBuffer
ã® growable
ããã³ maxByteLength
ããããã£ãåç
§ããã°ããã®ãµã¤ãºãæé·å¯è½ãã©ããã調ã¹ããã¨ãå¯è½ã§ãããæå¤§ãµã¤ãºã¯ä½ã§ãããããããã¾ããæé·å¯è½ãª SharedArrayBuffer
ã«ã¯ grow()
ãå¼ã³åºãã¦æ°ãããµã¤ãºãå²ãå½ã¦ããã¨ãã§ãã¾ããæ°ãããã¤ã㯠0 ã«åæåããã¾ãã
ãããã®æ©è½ã«ãããSharedArrayBuffer
ãããå¹ççã«æé·ããããã¨ãã§ãã¾ããããããªãã¨ãæ°ãããµã¤ãºã®ãããã¡ã¼ã³ãã¼ã使ããªããã°ãªãã¾ãããã¾ãããã®ç¹ã«ããã¦ãJavaScript 㯠WebAssembly ã¨åçã«ãªãã¾ãï¼Wasm ã®ãªãã¢ã¡ã¢ãªã¼ã¯ WebAssembly.Memory.prototype.grow()
ã§ãµã¤ãºã夿´ãããã¨ãã§ãã¾ãï¼ã
ã»ãã¥ãªãã£ä¸ã®çç±ãããSharedArrayBuffer
ã¯ãµã¤ãºã縮å°ãããã¨ã¯ã§ãã¾ãããã大ãããããã¨ã¯ã§ãã¾ãã
æ°ãã SharedArrayBuffer
ãªãã¸ã§ã¯ããçæãã¾ãã
SharedArrayBuffer
ã®ã¡ã½ããããè¿å¤ãæ§ç¯ããéã«ä½¿ç¨ãããã³ã³ã¹ãã©ã¯ã¿ã¼ãè¿ãã¾ãã
ãããã®ããããã£ã¯ SharedArrayBuffer.prototype
ã§å®ç¾©ããã¦ããããã¹ã¦ã® SharedArrayBuffer
ã¤ã³ã¹ã¿ã³ã¹ã§å
±æããã¾ãã
é
åã®ãµã¤ãºï¼ãã¤ãåä½ï¼ãããã¯é
åã®æ§ç¯æã«è¨å®ãããSharedArrayBuffer
ãæé·å¯è½ã§ããå ´åã«ã®ã¿ SharedArrayBuffer.prototype.grow()
ã¡ã½ããã使ç¨ãã¦å¤æ´ãããã¨ãã§ãã¾ãã
ã¤ã³ã¹ã¿ã³ã¹ãªãã¸ã§ã¯ãã使ããã³ã³ã¹ãã©ã¯ã¿ã¼é¢æ°ã§ããSharedArrayBuffer`ã¤ã³ã¹ã¿ã³ã¹ã®å ´åãåæå¤ã¯SharedArrayBuffer
ã³ã³ã¹ãã©ã¯ã¿ã¼ã§ãã
èªã¿åãå°ç¨ã§ããSharedArrayBuffer
ãæé·å¯è½ãªå ´å㯠true
ããããã§ãªãå ´å㯠false
ãè¿ãã¾ãã
èªã¿åãå°ç¨ã§ãSharedArrayBuffer
ãæé·ã§ããæå¤§é·ããã¤ãæ°ã§æå®ãã¾ããããã¯é
åãæ§ç¯ãããéã«è¨å®ããã夿´ãããã¨ã¯ã§ãã¾ããã
[Symbol.toStringTag]
ããããã£ã®åæå¤ã¯æåå "SharedArrayBuffer"
ã§ãããã®ããããã£ã¯ Object.prototype.toString()
ã§ä½¿ç¨ããã¾ãã
SharedArrayBuffer
ãæå®ãããµã¤ãºï¼ãã¤ãåä½ï¼ã¾ã§æé·ããã¾ãã
æ°ãã SharedArrayBuffer
ã使ãããã®ä¸èº«ããã® SharedArrayBuffer
ã® begin
ã®ä½ç½®ãã end
ã®ä½ç½®ã®ä¸ã¤æåã¾ã§ã®ãã¤ããã³ãã¼ãã¦è¿ãã¾ãã begin
ã¾ã㯠end
ãè² ã®æ°ã®å ´åã¯ãé
åã®å
é ããã§ã¯ãªãæ«å°¾ããã®ä½ç½®ã§åç
§ãã¾ãã
const sab = new SharedArrayBuffer(1024);
sab.slice(); // SharedArrayBuffer { byteLength: 1024 }
sab.slice(2); // SharedArrayBuffer { byteLength: 1022 }
sab.slice(-2); // SharedArrayBuffer { byteLength: 2 }
sab.slice(0, 1); // SharedArrayBuffer { byteLength: 1 }
WebGL ãããã¡ã¼å
ã§ã®ä½¿ç¨
const canvas = document.querySelector("canvas");
const gl = canvas.getContext("webgl");
const buffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.bufferData(gl.ARRAY_BUFFER, sab, gl.STATIC_DRAW);
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4