worker_thread ?? libuv thread??
718
작성한 질문수 3
노드 공부 중에 너무 헷갈려서 조심스레 질문 올려봅니다.
질문은 맨 밑에 써있습니다.
Libuv
nodejs 가 비동기 IO를 처리해주는 놈
보통 비동기작업이 발생하면 Libuv에 작업을 위임하고 그작업 내부에서 커널을 이용하거나 커널로 할수 없는 경우 libuv 가 자체적으로 운용하는 thread_pool 내부 thread 이용해서 (기본 4개 ) 작업 처리후 이벤트 리스너 내부 각 틱에 맞는 큐에 전달하고 메인 쓰레드 가 이벤트 루프를 돌면서 적절하게 콜백으로 실행한다.
worker_thread
노드에서 멀티 쓰레드 방식으로 작업 처리

구글링을 통해 찾은 그림으로 봐서는 노드도 한 실행 프로세스 내부에서 다른 프로그래밍 언어처럼 멀티 쓰레드를 사용한 것 처럼 보입니다.
본래 메인 쓰레드 가 하나 이기 때문에 노드는 싱글쓰레드 기반이라고 하는데 ,
만약 그림이 맞다면 이걸 깨고 메인 쓰레드를 여러개로 사용하겠다고 이해했습니다.
여기서 너무 햇갈립니다.
질문 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 도 생성되나요?
틀린 부분이나 오개념 지적 부탁드립니다 ㅠㅠ
답변 1
리눅스 노드 설치시 패키지
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





