postMessage로 데이터를 교환해야 합니다.)
[그림 1] 메인 스레드와 워커 스레드의 병렬 처리 아키텍처
메인 스레드와 워커 스레드가 메시지를 주고받으며 연산을 분담하는 과정입니다.
스레드 간 통신을 위해 사용되는 API들입니다.
| 메서드 / 이벤트 | 설명 |
|---|---|
new Worker(scriptURL) |
지정된 자바스크립트 파일을 로드하여 새로운 워커 스레드를 생성합니다. |
postMessage(data) |
메인 스레드와 워커 스레드 간에 데이터를 전송합니다. 전송된 데이터는 복사본(Clone)으로 전달됩니다. |
onmessage (이벤트) |
상대방으로부터 postMessage를 통해 메시지를 받았을 때 발생하는 이벤트입니다. event.data로 값을 읽습니다. |
terminate() |
워커 스레드의 실행을 즉시 종료합니다. (워커 내부에서는 self.close()를 사용) |
<div class="worker-container">
<h3>Web Workers API (Background Sync)</h3>
<p>메인 스레드를 멈추지 않고 복잡한 계산을 백그라운드에서 처리합니다.</p>
<button id="startBtn" class="btn">무거운 계산 시작</button>
<div id="result" class="result-box">결과 대기 중...</div>
</div>