Nodejs:싱글스레드::

Darcy Daeseok YU ·2023년 6월 3일
0

싱글 스레드란 스레드가 하나뿐이라는 것을 의미
(제어할 수 있는 스레드가 1개)
자바스크립트 코드가 동시에 실행될 수 없는 이유

노드 실행 -> 1개의 프로세스 생성 -> 스레드 여러개 생성(개발자 제어가능: 1개)

**블로킹이 발생할 것 같은 경우 논블로킹 방법으로 대기시간 최소

노드가 싱글스레드로 동작하지 않는 두가지 경우
스레드 풀 (Thread Pool) : 노드가 특정 동작할 경우 스스로 멀티 스레드 사용(암호화, 파일 입출력 등)
워커 스레드 (Worker Threads) : 노드 12버전에서 안정화되었고, 노드가 멀티 스레드를 사용가능하게 함. 직접 다수의 스레드를 다룰 수 있으며, CPU 작업(연산이 많은 작업)이 많은 경우 워커 스레드를 사용

싱글스레드 vs 멀티 스레드

싱글 스레드

싱글스레드 블로킹
고객1 주문후 서빙이 완료될 때까지 고객2,3은 대기해야한다.

싱글스레드 논블로킹
고객 1,2,3의 주문을 동시간에 받고 요리가 완료되면 완료된 순서대로 서빙
주문 순서와 요리의 서빙순서가 다를 수 있음

멀티 스레드

고객 점원 1:1 대응
장점:주문/서빙 문제없음(점원1 문제/부제도 커버가능)
단점:고객이 늘어날수록 점원수 증가=>점원이 놀고 있을 가능성 있음, 점원을 새로 채용/해고하는데 비용 발생

점원 여러명 + 논블로킹 방식은 좋은 해결안이나 프로그래밍이 상당히 어려워짐 => 프로세싱 방식을 대신 사용

I/O요청에는 멀티 프로세싱이 더 효율적

profile
React, React-Native https://darcyu83.netlify.app/

0개의 댓글