inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

노드의 특성

논 블로킹 방식의 동작 원리 이해가 어렵습니다.

214

공태성

작성한 질문수 27

0

강의 교안의 논 블로킹의 정의

image.png

와 책의 예제(setTimeout 함수를 이용해 작업 시간이 긴 함수를 백그라운드로 보냄)를 읽어 보면

오래 걸리는 함수를 백그라운드로 보내는 것 같은데, 그 다음 설명을 보면

image.png

일부 코드들이 백그라운드에서 병렬로 실행된다고 되어있어서 헷갈립니다.

위 내용을 바탕으로 제가 이해한 것은

인데 맞을까요?

node.js mysql mongodb express typescript socket.io jwt

답변 2

0

제로초(조현영)

네 맞습니다. 작업 시간이 긴 함수가 순수히 JS로만 구성되어 있다면 setTimeout이나 Promise로 태스크 큐로 넘길 수 있습니다.

일부 코드들의 병렬처리보다 태스크 큐에 있는 작업 시간이 긴 함수 처리가 더 먼저 진행됩니다. 백그라운드에서 병렬처리가 끝난 후에야 태스크 큐에 등록됩니다.

0

공태성

일부 코드들의 병렬처리보다 태스크 큐에 있는 작업 시간이 긴 함수 처리가 더 먼저 진행됩니다.

에서 더 먼저 진행된다는 것의 의미가 무엇인가요? 저는 작업 시간이 긴 함수가 먼저 실행되지 않기 위해 논 블로킹 방식을 이용한다고 이해했는데, 그럼 이 말은

만약~ 태스크 큐에 보내지지 않으면 병렬 처리 전에 작업 시간이 긴 함수를 먼저 처리한다는 의미인가요??

0

제로초(조현영)

지금 병렬처리될 수 있는 코드와 작업시간이 긴 JS 함수를 동시에 생각하시는 것 같은데, 저는 예시를 그렇게 든 적이 없긴 합니다.

  1. 코드 중에는 병렬처리될 수 있는 코드가 있다.

  2. 태스크 큐로 보내는 방식으로 작업시간이 긴 함수의 실행을 뒤로 미룰 수 있다.

이게 제가 설명한 것 전부이고요. 1,2가 동시에 일어나는 상황에서의 실행 순서는 코드에 따라 다릅니다. 일반적인 경우 1,2가 동시에 시작했다면 2가 먼저 실행되고 1이 실행됩니다.

실행이라고 함은, JS단에서 처리가 완료되는 것을 의미합니다.

0

공태성

뭔가 제 개념에 문제가 있는 것 같은데 더 깊이 들어가지 않고 마지막으로 답변주신 내용대로 외우고 있겠습니다.. ㅜㅜ

1

제로초(조현영)

네 저 일부 코드가 뭔지만 외우고 계시면 됩니다. 백그라운드로 보내는 코드랑요.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

논 블로킹(Non-blocking) 방식에 대한 근본적 이해를 돕기 위해서, 관련된 기존 질문과 답변 링크들을 찾아보았습니다. 논 블로킹 방식의 동작 원리와 관련하여 질문자님께서 제시한 내용과 유사한 주제에 대한 질문과 답변을 아래에서 참고하실 수 있습니다.

노드(Node.js)에서 논 블로킹(Non-blocking) 방식은 오래 걸리는 작업(예: 파일 시스템 접근, 네트워크 요청 등)을 처리할 때 사용되는 모델입니다. 이 모델의 핵심은 오래 걸리는 작업을 백그라운드에서 처리하도록 보내고, 작업이 완료되면 그 결과를 콜백 함수나 프로미스(Promise)를 통해 전달받는 것입니다. 이를 통해, 메인 스레드는 다른 요청을 계속 처리할 수 있어 애플리케이션이 멈추지 않고, 더 많은 요청을 동시에 처리할 수 있게 됩니다.

답변 링크:
1. 논블로킹과 이벤트 루프 - 이 답변은 백그라운드에서 처리되는 작업들(예: setTimeout)이 실제 어떻게 동시에 처리되는지에 대한 설명을 포함하고 있습니다. 자바스크립트 코드가 돌아가는 쓰레드는 하나뿐이지만 백그라운드에서는 여러 쓰레드를 사용할 수 있다고 언급하고 있습니다.

  1. node에서 말하는 non-blocking에 대한 개념 문의 - 논 블로킹은 오래 걸리는 함수를 백그라운드로 보내는 방식으로 설명되어 있는데, 이 과정에서 node.js가 어떻게 논 블로킹 I/O를 처리하는지에 대한 자세한 설명이 포함됩니다.

  2. 비동기 코드 질문 - 이 부분은 setTimeout과 같은 비동기 코드가 백그라운드에서 어떻게 작동하는지를 포함하여 이벤트 루프와 태스크 큐의 관계를 설명합니다.

위 링크들은 논 블로킹 방식의 동작 원리에 대한 질문자님의 이해를 돕기 위해 추천되었습니다. JavaScript의 비동기 처리 모델이 Node.js에서 어떻게 활용되는지에 대한 기본적인 설명을 담고 있으니 참고하시면 좋을 것 같습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

깃헙 질문

0

79

2

강의 1-1 수업노트의 로드맵 링크가 작동하지 않습니다.

0

74

1

aws - lightsail 이용 관련

0

56

1

4강 http 서버 만들때 ESM방식으로 해도 될까요?

0

78

2

모듈 사용 시 단점이 있나요?

0

78

1

node.js 버전 및 typescript 적용 문의

0

91

2

12.7. 방장기능(강퇴) 질문드립니다.

0

78

2

12.7 socket.js코드 그대로 뱃겨서 했는데, socket.request.session.color가안나오네요

0

67

1

12.7 코드 그대로 뱃겨서 햇는데 스샷같이 오류가뜹니다.

0

73

2

12.7.1스스로 해보기 질문되나요

0

89

3

시퀄라이즈 실습하기 질문드립니다.

0

186

9

<7-5. 시퀄라이즈 사용하기>수업 질문 드립니다.

0

94

2

크롬에서 user id를 인풋에 입력하고 등록하면 404 에러처리 페이지가 뜹니다.

0

109

2

구매 결제관련 질문입니다 !

0

120

1

다수의 supertest 가 실행될 때 force:true로 인한 DB 초기화 문제

0

130

2

node 설치 방법이 전혀다르게 바뀐것 같습니다.

0

146

2

12강 깃허브에 있는 12.7 chat.html 복붙했는데 css오류

0

119

2

무료/프리미엄 동시 소유 시 질문

0

113

1

비주얼 스튜디오 코드로 계속 진행해도 괜찮을까요?

0

133

2

10강 cors에러 localhost:4000으로 접속했을때 에러

1

155

2

webstorm 해결할 수 없는 변수 문제

0

152

2

혹시 몽고DB 쓸거면 MySQL 강의 스킵해도 되나요?

0

146

2

LightSail 실행 중 오류 질문드립니다!

0

198

2

RedisStore 사용법 질문

0

129

2