inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

worker_thread ?? libuv thread??

718

정동준

작성한 질문수 3

0

노드 공부 중에 너무 헷갈려서 조심스레 질문 올려봅니다.

질문은 맨 밑에 써있습니다.

Libuv

보통 비동기작업이 발생하면 Libuv에 작업을 위임하고 그작업 내부에서 커널을 이용하거나 커널로 할수 없는 경우 libuv 가 자체적으로 운용하는 thread_pool 내부 thread 이용해서 (기본 4개 ) 작업 처리후 이벤트 리스너 내부 각 틱에 맞는 큐에 전달하고 메인 쓰레드 가 이벤트 루프를 돌면서 적절하게 콜백으로 실행한다.

worker_thread

 

스크린샷 2022-10-29 오후 2.44.05.png

구글링을 통해 찾은 그림으로 봐서는 노드도 한 실행 프로세스 내부에서 다른 프로그래밍 언어처럼 멀티 쓰레드를 사용한 것 처럼 보입니다.

본래 메인 쓰레드 가 하나 이기 때문에 노드는 싱글쓰레드 기반이라고 하는데 ,

만약 그림이 맞다면 이걸 깨고 메인 쓰레드를 여러개로 사용하겠다고 이해했습니다.

여기서 너무 햇갈립니다.

질문 1 : worker_thread 를 통해 생성한 쓰레드랑 Libuv 에서 관리하는 thread pool 안에 쓰레드랑 같은 개념인가요?

일단 저는 두개는 다르다고 이해했습니다.

worker_thread 를 이용해서 쓰레드를 추가한 행위는 메인 쓰레드를 여러개 사용하겠다는 의미 이고

libuv 는 자체적으로 운용하는 쓰레드 풀 이다.

질문 2 : 만약 둘이 다르다면 worker_thread 를 3개 생성하면 libuv 에 쓰레드는 12개가 생성되나요?

저는 일단 아니라고 생각 합니다.. 그렇다면 thread_pool 도 3개가 생성되고 .. 이러면 너무 무서울것 같습니다. (그럼 만약 thread_pool 제한을 128개로 풀어버리고 worker_thread 를 8개 만들면 ㄷ ㄷ ㄷ )

아마 가상적으로 격리시킨다고 이해했습니다.. 결국 (v8엔진과 libuv 는 한개다.. )

https://stackoverflow.com/questions/61328960/when-is-better-using-clustering-or-worker-threads

좀더 찾아본 바로는 별개 의 것으로 있는것 같네요 ㅠ

그럼 정말 3개의 worker_thread 를 사용하면 각 v8 엔진과 libuv 도 생성되나요?

 

틀린 부분이나 오개념 지적 부탁드립니다 ㅠㅠ

Sequelize nodejs mysql mongodb

답변 1

0

제로초(조현영)

아뇨 둘다 메인쓰레드랑 다른 쓰레드를 추가로 생성해서 사용하는 겁니다.

워커쓰레드랑 libuv도 별개입니다. 쓰레드가 별개로 생성됩니다

리눅스 노드 설치시 패키지

0

172

0

socket.js 에서 referer로부터 roomId를 가져올 때

0

930

3

스트리밍 방식으로 대용량 파일 업로드 & 다운로드 관련 질문

0

2297

2

a[title] 질문드립니다

0

387

1

리뉴얼 강의 및 공부 방법

0

590

1

jwt decode

0

1138

1

node.js 교과서 3판 질문드립니다

0

397

1

passport와 jwt

0

439

1

리뉴얼 강의

0

428

2

혹시 Node.js 교과서 3판 이북은 언제 나오나요?

0

359

1

몽고디비 사용자도 MYSQL부분을 들어야 하나요???

0

490

1

sql 쿼리 로그는 어떤 모듈이 작성하나요?

0

511

2

nunjucks res.render('error'); 작동을 안합니다.

0

520

1

질문있습니다.

0

348

1

multer 한글 파일 업로드시 파일명이 깨져요.

1

3545

1

수업자료는 어디있나요?

0

374

1

질문 있습니디

0

245

1

multer 사용시 file 외 name값은 못받나용?

0

430

1

코드 중복 부분 질문드립니다.

0

303

1

api 만드는 이유 질문드립니다.

0

293

1

Strategy의 done에 대해 질문드립니다.

0

374

1

안녕하세요 fs 권한 관련 질문드립니다

0

456

1

시퀄라이즈 연결질문...

0

511

2

res.setHeader vs res.cookie

0

1798

3