• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

node에서 말하는 non-blocking에 대한 개념 문의

22.10.25 18:01 작성 조회수 120

0

안녕하세요 node에서 말하는 non-blocking에 대한 개념에 대해 문의 드립니다.

단원 "1.2 노드의 구성 - 2. 논 블로킹" io 에서 설명하시기를 논 블로킹은 오래 걸리는 함수를 백그라운드로 보내는 방식으로 설명돼 있는데, 우선 non-blocking은 서버측 소켓 구현방식으로 알고 있어서, 제가 알고 있는 기준에서 좀 이해가 안 돼 문의드립니다. 서버측 기준에서 논 블로킹 자체의 의미에서 클라이언트의 io 접속 처리를 work thread에 바로 위임한 후, 뒷 따르는 다음 함수를 처리함에 있어 node 에서 만은 추가적으로 함수의 실행 시간까지 미리 판단해 background 로 병렬 처리까지 한다는 의미인지 문의드립니다.

 

답변 1

답변을 작성해보세요.

0

추가적으로 함수의 실행시간까지 미리 판단한다는 게 무슨 뜻인지 잘 모르겠습니다.

노드는 위임 후에는 전혀 그 작업에 대해 신경쓰지 않습니다. 나중에 콜백 방식으로 메인쓰레드가 위임했던 작업들이 끝났음을 알림받습니다. 그래서 스레드가 하나여도 여러 작업을 동시에 처리하는 것처럼 효과를 얻을 수 있습니다.

메인스레드가 하는 작업은 스레드풀로 보내는 작업 + 콜백이 왔을 때 콜백 내용 처리하는 작업밖에 없습니다.

water님의 프로필

water

질문자

2022.10.26

강의내용 중 "단원 "1.2 노드의 구성 - 2. 논 블로킹" io 에서 설명하시기를 논 블로킹은 오래 걸리는 함수" 를 백그라운드로 보낸다는 식으로 강의내용으로 기술돼 있어서 이 부분(" 논 블로킹은 오래 걸리는 함수")에 대한 질문이었습니다.

그렇다면, 이 부분에 대해 저는 기본적인 non-blocking 외에 추가적으로 nodes.js에서의 non-blocking은 강의내용이 기입된 대로 오래 걸리는 함수는 백그라운드로 보내는 추가적인 기능이 있구나 로 이해했던 겁니다.

그렇다면, 강의 내용중 "단원 "1.2 노드의 구성 - 2. 논 블로킹" io 에서 설명하시기를 논 블로킹은 오래 걸리는 함수"" 부분은 에서 "오래 걸리는 함수" 라 설명된 부분이 설명상 잘못 된 부분인지, 또는 그렇지 않다면, "오래 걸리는 함수"로 설명된 부분의 의미를 알고 싶습니다.

 

 

오래 걸리는 함수라고 해서 다 백그라운드로 보내지는 것은 아니고요. 자바스크립트에서는 백그라운드로 보내질 수 있는 함수가 정해져 있습니다. Promise, Timer, 파일 시스템, 암호화 등의 함수들입니다. 보통 이런 함수들은 네트워킹이나 CPU 작업들을 많이 하므로 오래 걸리는 것이고요. 그래서 백그라운드로 보낼 수 있도록 설계되어 있습니다.