본문 바로가기

JS

Worker Thread

Worker Thread 동작 방식

Worker Thread는 일반적으로 메인 스레드와 분리된 별도의 스레드에서 실행되는 작업을 의미함

이 스레드는 백그라운드에서 긴 작업을 수행하여 메인 스레드의 응답성을 유지

  1. 작업 요청: 메인 스레드가 작업을 생성하고 이를 Worker Thread에 전달
  2. 작업 수행: Worker Thread는 전달받은 작업을 수행하고, 이 과정에서 메인 스레드는 다른 작업을 계속 수행 가능
  3. 작업 완료 통보: 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