Worker Thread 동작 방식
Worker Thread는 일반적으로 메인 스레드와 분리된 별도의 스레드에서 실행되는 작업을 의미함
이 스레드는 백그라운드에서 긴 작업을 수행하여 메인 스레드의 응답성을 유지
- 작업 요청: 메인 스레드가 작업을 생성하고 이를 Worker Thread에 전달
- 작업 수행: Worker Thread는 전달받은 작업을 수행하고, 이 과정에서 메인 스레드는 다른 작업을 계속 수행 가능
- 작업 완료 통보: Worker Thread가 작업을 완료하면 메인 스레드에 이를 통보하고, 결과를 반환
이 과정에서 Worker Thread는 메인 스레드와 별도의 스택, 힙, 명령 포인터를 가지며, 이를 통해 작업을 독립적으로 수행할 수 있음
사용 방법
// CommonJS
const { Worker } = require('worker_threads')
// ESM
import { Worker } from "worker_threads";
자바스크립트의 특성
자바스크립트는 싱글스레드이지만, Node.js에서는 worker_threades 모듈을 이용해 멀티스레드 환경을 구축할 수 있음
따라서 Node.js를 사용할 때에는 동시성 문제에 주의해야 함
- 동시성 문제 해결 : async-mutex, semaphore 라이브러리 사용으로 해결 가능
스레드 풀 (Thread Pool)
스레드 풀은 일정 수의 스레드를 미리 생성해 두고, 작업 큐에서 작업을 가져와 할당하는 방식
이를 통해 스레드 생성과 종료의 오버헤드를 줄이고, 자원을 효율적으로 사용 가능
- 스레드 생성 비용 절감
- 자원 최적화
- 작업의 효율적 분배
'JS' 카테고리의 다른 글
| Event (0) | 2024.08.21 |
|---|---|
| 파일 입출력 (0) | 2024.08.06 |
| 비동기 처리 (0) | 2024.07.29 |
| Observer 패턴, Pub-Sub 패턴 + Event Emitter (0) | 2024.07.25 |
| 함수형 프로그래밍 (2) - 일급 함수 (4) | 2024.07.25 |