이벤트루프는 싱글스레드 내에 존재한다. 그렇다면 하나의 작업 수행을 완료하기 전에 다른 작업을
수행하지 못하여 한 번 실행했을 때와 두 번 실행했을 때 걸리는 시간이 두 배 차이가 나야 한다.
하지만 crypto 모듈을 예로 실험했을 때 각각 672ms, 679ms 로 차이가 별로 나지 않는 이유는
바로 스레드풀때문이다.
✓ Thread Pool
스레드풀을 사용하는 모듈로는 crypto, zlib, dns. lookup 등이 있다. 스레드풀의 기본 개수는 4개로 다음 예제를 통해 확인할 수 있다.
스레드풀이 작업을 동시에 처리하므로 8 개 작업 중에서 어느 것이 먼저 처리될지 모른다.
하지만 5~8 의 소요시간이 1~4 의 소요시간보다 약 2 배인 것을 확인할 수 있다.
따라서 처음 네 작업이 동시에 실행되고 종료되면 다음 네 작업이 동시에 실행되는 것이다.
Node threadpool 작업을 반복할 경우 1~4 의 작업 수행 순서는 달라져도 5~8 의 작업 순서보다 뒤로 가지 않는 것을 확인할 수 있다.
SET UV_THREADPOOL_SIZE에 스레드 개수를 설정할 숫자를 대입하면 조절할 수 있다. 숫자를 크게 할 경우 컴퓨터 코어 개수와 같거나 많게 두어야 효과 발생하고 같을 때 최적이다.
✓ Worker_Threads
노드에서 멀티 스레드 방식으로 작업하기 위해서는 w orker_threads 모듈을 사용하면 된다.
Main thread에서 new worker 를 통해 worker threads 를 생성하여 작업을 수행한다.
'Node.js' 카테고리의 다른 글
21.04.25 project#4 challenge collection 생성 (0) | 2021.04.25 |
---|---|
21.04.22 mongoDB 연결 및 postman 사용 연습 (0) | 2021.04.25 |
21.02.18 Node.js 동작 원리, Event loop (0) | 2021.03.06 |
21.02.17 통신 프로토콜, 패키지 모듈, 쿠키-세션 (0) | 2021.02.18 |
21.02.16 스레드, 작업 처리 방식 (0) | 2021.02.16 |