--- id: P-REINFORCE-AUTO-4A9AE0 category: "10_Wiki/๐Ÿ’ก Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - SharedArrayBuffer๋กœ ์Šค๋ ˆ๋“œ ๊ฐ„ ๋ฉ”๋ชจ๋ฆฌ ๊ณต์œ  ํšจ์œจ ๋†’์ด๊ธฐ" --- # [[SharedArrayBufferแ„…แ…ฉ แ„‰แ…ณแ„…แ…ฆแ„ƒแ…ณ แ„€แ…กแ†ซ แ„†แ…ฆแ„†แ…ฉแ„…แ…ต แ„€แ…ฉแ†ผแ„‹แ…ฒ แ„’แ…ญแ„‹แ…ฒแ†ฏ แ„‚แ…ฉแ‡แ„‹แ…ตแ„€แ…ต|SharedArrayBuffer๋กœ ์Šค๋ ˆ๋“œ ๊ฐ„ ๋ฉ”๋ชจ๋ฆฌ ๊ณต์œ  ํšจ์œจ ๋†’์ด๊ธฐ]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > **SharedArrayBuffer**๋Š” ์›น ์›Œ์ปค(Web Worker)์™€ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ ๊ฐ„์˜ ์ „ํ†ต์ ์ธ ํ†ต์‹  ๋ฐฉ์‹์ธ `postMessage`์˜ ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™”(Serialization) ๋ฐ ๋ณต์‚ฌ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , **๋‘ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๋ณต์‚ฌ ์—†์ด(Zero-copy) ์ง์ ‘ ์ ‘๊ทผํ•˜๊ณ  ๊ณต์œ **ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์ €์ˆ˜์ค€(Low-level)์˜ ๊ณ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) **1. ์ง๋ ฌํ™”(Serialization) ๋ณ‘๋ชฉ ์ œ๊ฑฐ** ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ™˜๊ฒฝ์—์„œ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์™€ ์›Œ์ปค ์Šค๋ ˆ๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์œผ๋ ค๋ฉด ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜๊ณ  ์ง๋ ฌํ™”/์—ญ์ง๋ ฌํ™”ํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ `SharedArrayBuffer`๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๋ณต์‚ฌ ๊ณผ์ • ์—†์ด ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ์›์‹œ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฒ„ํผ ์ž์ฒด๋ฅผ ๊ณต์œ ํ•˜๋ฏ€๋กœ, ๋ฉ”๋ชจ๋ฆฌ ์ „์†ก์— ์†Œ๋ชจ๋˜๋Š” ์ง€์—ฐ ์‹œ๊ฐ„(์˜ค๋ฒ„ํ—ค๋“œ)์ด '0'์— ๊ฐ€๊นŒ์›Œ์ง‘๋‹ˆ๋‹ค. **2. ECS(Entity Component System) ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜์™€์˜ ์‹œ๋„ˆ์ง€** ์ด ๊ธฐ์ˆ ์€ `bitECS`์™€ ๊ฐ™์€ ๊ณ ์„ฑ๋Šฅ ๊ฒŒ์ž„ ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด(ECS)๊ณผ ๊ฒฐํ•ฉํ•  ๋•Œ ์ง„๊ฐ€๋ฅผ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ๋‚ด ์ˆ˜๋งŒ ๊ฐœ์˜ ์—”ํ‹ฐํ‹ฐ(ํŒŒํ‹ฐํด, ์ด์•Œ, ์  ๋“ฑ) ์ •๋ณด๋ฅผ ๋ฌด๊ฑฐ์šด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด ๋Œ€์‹  ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์ธ `TypedArray` ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑํ•œ ๋’ค, ์ด๋ฅผ `SharedArrayBuffer`์— ์ ์žฌํ•ฉ๋‹ˆ๋‹ค. - **์›Œ์ปค ์Šค๋ ˆ๋“œ(๋ฌผ๋ฆฌ ์—”์ง„/AI):** ๋ฌผ๋ฆฌ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋ฒ„ํผ ๋‚ด์˜ ์ขŒํ‘œ($x, y, z$) ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. - **๋ฉ”์ธ ์Šค๋ ˆ๋“œ(React/Three.js):** ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ ์„ ๊ธฐ๋‹ค๋ฆด ํ•„์š” ์—†์ด, ๋ฒ„ํผ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ฆ‰์‹œ ์ฝ์–ด์™€ `InstancedMesh` ๋“ฑ์„ 60FPS๋กœ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค. **3. Atomics API๋ฅผ ํ†ตํ•œ ์›์ž์ (Atomic) ๋™๊ธฐํ™” ๋ณด์žฅ** ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ฝ๊ธฐ/์“ฐ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ๊ผฌ์ด๋Š” ๊ฒฝ์Ÿ ์ƒํƒœ(Race Condition)๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. `SharedArrayBuffer`๋Š” `Atomics` ๊ฐ์ฒด์—์„œ ์ œ๊ณตํ•˜๋Š” ์›์ž์  ์—ฐ์‚ฐ์„ ์ง€์›ํ•˜์—ฌ, ์Šค๋ ˆ๋“œ ๊ฐ„์— ์•ˆ์ „ํ•˜๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์กฐ์ž‘ํ•˜๊ณ  ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. **4. ํ•œ๊ณ„์  ๋ฐ ๊ฐœ๋ฐœ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„ (Trade-offs)** - **๋งค์šฐ ๋‚ฎ์€ ์ถ”์ƒํ™” ์ˆ˜์ค€:** ์ผ๋ฐ˜์ ์ธ JSON ๊ฐ์ฒด๋‚˜ ์œ ์—ฐํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ๋ฐ”์ดํŠธ ๋‹จ์œ„์˜ ๋กœ์šฐ ๋ ˆ๋ฒจ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฒ„ํผ๋ฅผ ์ง์ ‘ ๊ณ„์‚ฐํ•˜๊ณ  ๋‹ค๋ค„์•ผ ํ•˜๋ฏ€๋กœ ๊ฐœ๋ฐœ ๋‚œ์ด๋„๊ฐ€ ๋งค์šฐ ๋†’๊ณ  ์‚ฌ์šฉ์ž ์นœํ™”์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. - **๋ณด์•ˆ ์ œ์•ฝ (COOP/COEP):** ๋ฉœํŠธ๋‹ค์šด(Meltdown) ๋ฐ ์ŠคํŽ™ํ„ฐ(Spectre)์™€ ๊ฐ™์€ CPU ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด, ์›น ์„œ๋ฒ„์—์„œ ๋ณด์•ˆ ํ—ค๋”(`Cross-Origin-Opener-Policy` ๋ฐ `Cross-Origin-Embedder-Policy`)๋ฅผ ์—„๊ฒฉํ•˜๊ฒŒ ์„ค์ •ํ•ด์•ผ๋งŒ ๋ธŒ๋ผ์šฐ์ €์—์„œ `SharedArrayBuffer` ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (โ€ป ์ด ๋‚ด์šฉ์€ ์ œ๊ณต๋œ ์†Œ์Šค ์™ธ๋ถ€์˜ ์ผ๋ฐ˜์ ์ธ ์›น ๋ณด์•ˆ ์ง€์‹์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ๋„์ž… ์‹œ ์„œ๋ฒ„ ์„ค์ • ํ™•์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.) ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - Raw Source: 00_Raw/2026-04-20/SharedArrayBuffer๋กœ ์Šค๋ ˆ๋“œ ๊ฐ„ ๋ฉ”๋ชจ๋ฆฌ ๊ณต์œ  ํšจ์œจ ๋†’์ด๊ธฐ.md ---