--- id: P-REINFORCE-AUTO-1B42F5 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 vs postMessage ์„ฑ๋Šฅ ์ฐจ์ด" --- # [[SharedArrayBuffer vs postMessage แ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผ แ„Žแ…กแ„‹แ…ต|SharedArrayBuffer vs postMessage ์„ฑ๋Šฅ ์ฐจ์ด]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > `postMessage`๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ง๋ ฌํ™” ๋ฐ ์—ญ์ง๋ ฌํ™”ํ•˜์—ฌ ์Šค๋ ˆ๋“œ ๊ฐ„์— ์ „๋‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ†ต์‹  ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ฐ˜๋ฉด, `SharedArrayBuffer`๋Š” ๋‘ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ณต์œ ํ•˜์—ฌ **๋ฐ์ดํ„ฐ ๋ณต์‚ฌ ๋น„์šฉ ์—†์ด 0์˜ ์˜ค๋ฒ„ํ—ค๋“œ์™€ ๊ทน๋„๋กœ ๋‚ฎ์€ ์ง€์—ฐ ์‹œ๊ฐ„**์„ ๋‹ฌ์„ฑํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) **1. ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐ ๋ณต์‚ฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜** - **postMessage**: ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋กœ ๋ณด๋‚ผ ๋•Œ ๊ตฌ์กฐํ™”๋œ ๋ณต์ œ(Structured Clone) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด **๋ฐ์ดํ„ฐ๋ฅผ ์ง๋ ฌํ™”(Serialization)ํ•˜๊ณ  ์—ญ์ง๋ ฌํ™”ํ•˜๋Š” ๊ณผ์ •**์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณต์‚ฌ๋˜๋ฏ€๋กœ, ์ „๋‹ฌํ•˜๋Š” ํŽ˜์ด๋กœ๋“œ์˜ ํฌ๊ธฐ์— ๋น„๋ก€ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ CPU ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. (๋‹จ, Transferable Objects๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณต์‚ฌ ์—†์ด ์†Œ์œ ๊ถŒ์„ ์ด์ „ํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ์ „์†ก ํ›„ ์›๋ž˜ ์Šค๋ ˆ๋“œ์—์„œ๋Š” ํ•ด๋‹น ๊ฐ์ฒด์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค). - **SharedArrayBuffer**: ๋‘ ์Šค๋ ˆ๋“œ๊ฐ€ **์™„์ „ํžˆ ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๊ณต์œ **ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ์ชฝ ์Šค๋ ˆ๋“œ์—์„œ ์“ฐ๋ฉด ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ์ฆ‰์‹œ ์ฝ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, **๋ฐ์ดํ„ฐ ๋ณต์‚ฌ๋‚˜ ์ด๋™์ด ์ „ํ˜€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค**. **2. ์„ฑ๋Šฅ ๋ฐ ์ง€์—ฐ ์‹œ๊ฐ„ (Latency)** - **postMessage**: ๋ฉ”์‹œ์ง€ ํŒจ์‹ฑ ๊ณผ์ •์—์„œ **์•ฝ 5~10ms์˜ ํ†ต์‹  ์˜ค๋ฒ„ํ—ค๋“œ**๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๋งค ํ”„๋ ˆ์ž„๋งˆ๋‹ค ์ˆ˜์ฒœ ๊ฐœ์˜ ์—”ํ‹ฐํ‹ฐ ์œ„์น˜ ๊ฐ’์ด๋‚˜ ํฐ JSON ๊ฐ์ฒด๋ฅผ ์ฃผ๊ณ ๋ฐ›์•„์•ผ ํ•˜๋Š” ๊ฒŒ์ž„ ํ™˜๊ฒฝ์—์„œ๋Š” ์ด ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์‹ฌ๊ฐํ•œ ์„ฑ๋Šฅ ๋ณ‘๋ชฉ(Bottleneck)์œผ๋กœ ์ž‘์šฉํ•˜์—ฌ ํ”„๋ ˆ์ž„ ๋“œ๋ž์„ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - **SharedArrayBuffer**: ์Šค๋ ˆ๋“œ ๊ฐ„ ํ†ต์‹  ์ง€์—ฐ ์‹œ๊ฐ„์ด **๊ทน๋„๋กœ ๋‚ฎ์Šต๋‹ˆ๋‹ค(๊ฐ€์žฅ ๋น ๋ฆ„)**. ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™” ๋น„์šฉ์ด '0'์ด๋ฏ€๋กœ ์†๋„์™€ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ ์ธก๋ฉด์—์„œ ๊ฐ€์žฅ ์••๋„์ ์ธ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•˜๋ฉฐ, ์›์ž์  ์—ฐ์‚ฐ(Atomic operations)์„ ์ง€์›ํ•˜์—ฌ ๋™์‹œ์„ฑ ๋ฌธ์ œ ์—†์ด ๊ณ ์†์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. **3. ๊ฐœ๋ฐœ ํŽธ์˜์„ฑ ๋ฐ ๊ตฌํ˜„ ๋ณต์žก๋„** - **postMessage**: ๊ตฌํ˜„ ๋ณต์žก๋„๊ฐ€ ๋‚ฎ์œผ๋ฉฐ(Low), ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ต์ˆ™ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ผ๋ฐ˜ ๊ฐ์ฒด๋‚˜ JSON ๊ตฌ์กฐ๋ฅผ ๊ทธ๋Œ€๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์–ด **๋งค์šฐ ์ง๊ด€์ ์ด๊ณ  ์นœํ™”์ **์ž…๋‹ˆ๋‹ค. - **SharedArrayBuffer**: ๊ตฌํ˜„ ๋ณต์žก๋„๊ฐ€ ๋งค์šฐ ๋†’์Šต๋‹ˆ๋‹ค(High). JSON๊ณผ ๊ฐ™์€ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ ๋Œ€์‹  **์›์‹œ ์ด์ง„ ๋ฐ์ดํ„ฐ(Raw Binary Data) ๋ฒ„ํผ**๋ฅผ ์ง์ ‘ ์ œ์–ดํ•˜๊ณ  ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ์•„์ฃผ ์ €์ˆ˜์ค€(Low-level)์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์š”๊ตฌ๋ฉ๋‹ˆ๋‹ค. **4. ์ ํ•ฉํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€ (Use Cases)** - **postMessage**: ํฌ๊ธฐ๊ฐ€ ์ž‘๊ฑฐ๋‚˜ ๊ฐ€๋”์”ฉ ์ „์†ก๋˜๋Š” ์ด๋ฒคํŠธ, ํ˜น์€ ๊ฒฐ๊ณผ ๋„์ถœ์— ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์ธ ๋น„๋™๊ธฐ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์„ ๋•Œ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. - **SharedArrayBuffer**: ECS(Entity-Component-System) ์•„ํ‚คํ…์ฒ˜ ๋“ฑ์—์„œ ์ˆ˜๋งŽ์€ ๊ฐ์ฒด์˜ ์ปดํฌ๋„ŒํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ , ๋ฌผ๋ฆฌ ์—”์ง„(์›Œ์ปค ์Šค๋ ˆ๋“œ)์˜ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ Œ๋”๋ง ๋ฃจํ”„(๋ฉ”์ธ ์Šค๋ ˆ๋“œ)๊ฐ€ **๋งค ํ”„๋ ˆ์ž„ ์ฆ‰๊ฐ์ ์œผ๋กœ ์ฝ์–ด๊ฐ€์•ผ ํ•˜๋Š” ๊ณ ์„ฑ๋Šฅ ๊ฒŒ์ž„ ์—”์ง„** ๊ตฌํ˜„์— ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[Web Worker (แ„‹แ…ฐแ†ธ แ„‹แ…ฏแ„แ…ฅ)|Web Worker]], [[แ„Œแ…ตแ†จแ„…แ…งแ†ฏแ„’แ…ช(Serialization) แ„†แ…ตแ†พ แ„‡แ…งแ†ผแ„†แ…ฉแ†จ แ„’แ…งแ†ซแ„‰แ…กแ†ผ|์ง๋ ฌํ™”(Serialization) ๋ฐ ๋ณ‘๋ชฉ ํ˜„์ƒ]], Transferable Objects, Data-Oriented Design (ECS), ์›์ž์  ์—ฐ์‚ฐ(Atomic Operations) - **Projects/Contexts:** ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ๊ณ ์„ฑ๋Šฅ React ๊ฒŒ์ž„ ์—”์ง„, [[แ„‰แ…ตแ†ฏแ„‰แ…ตแ„€แ…กแ†ซ แ„†แ…ฎแ†ฏแ„…แ…ต แ„‰แ…ตแ„†แ…ฒแ†ฏแ„…แ…ฆแ„‹แ…ตแ„‰แ…งแ†ซ แ„ƒแ…ฉแ†ผแ„€แ…ตแ„’แ…ช|์‹ค์‹œ๊ฐ„ ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋™๊ธฐํ™”]] - **Contradictions/Notes:** `postMessage`๋„ `ArrayBuffer` ๋“ฑ์„ Transferable ๊ฐ์ฒด๋กœ ์ „๋‹ฌํ•˜๋ฉด ์ง๋ ฌํ™” ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๊ฑฐ์˜ 0์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” '์†Œ์œ ๊ถŒ ์ด์ „' ๋ฐฉ์‹์ด๋ฏ€๋กœ ๋‘ ์Šค๋ ˆ๋“œ๊ฐ€ "๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š”" ์–‘๋ฐฉํ–ฅ ๊ณต์œ (Shared)๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์—์„œ `SharedArrayBuffer`์™€ ๊ฒฐ์ •์ ์ธ ์ฐจ์ด๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. --- _Last updated: 2026-04-14_ - Raw Source: 00_Raw/2026-04-20/SharedArrayBuffer vs postMessage ์„ฑ๋Šฅ ์ฐจ์ด.md ---