논 블로킹 방식의 동작 원리 이해가 어렵습니다.
214
작성한 질문수 27
강의 교안의 논 블로킹의 정의
와 책의 예제(setTimeout 함수를 이용해 작업 시간이 긴 함수를 백그라운드로 보냄)를 읽어 보면
오래 걸리는 함수를 백그라운드로 보내는 것 같은데, 그 다음 설명을 보면

일부 코드들이 백그라운드에서 병렬로 실행된다고 되어있어서 헷갈립니다.
위 내용을 바탕으로 제가 이해한 것은
작업 시간이 긴 함수, 일부 코드 모두 백그라운드로 전달
작업 시간이 긴 함수는 태스크 큐로 전달되고 동시 작업이 가능한 일부 코드들은 백그라운드에서 병렬로 처리
일부 코드들의 병렬 처리가 끝나고 나면 태스크 큐에 있는 (블로킹 방식의)작업 시간이 긴 함수 처리
인데 맞을까요?
답변 2
0
네 맞습니다. 작업 시간이 긴 함수가 순수히 JS로만 구성되어 있다면 setTimeout이나 Promise로 태스크 큐로 넘길 수 있습니다.
일부 코드들의 병렬처리보다 태스크 큐에 있는 작업 시간이 긴 함수 처리가 더 먼저 진행됩니다. 백그라운드에서 병렬처리가 끝난 후에야 태스크 큐에 등록됩니다.
0
일부 코드들의 병렬처리보다 태스크 큐에 있는 작업 시간이 긴 함수 처리가 더 먼저 진행됩니다.
에서 더 먼저 진행된다는 것의 의미가 무엇인가요? 저는 작업 시간이 긴 함수가 먼저 실행되지 않기 위해 논 블로킹 방식을 이용한다고 이해했는데, 그럼 이 말은
만약~ 태스크 큐에 보내지지 않으면 병렬 처리 전에 작업 시간이 긴 함수를 먼저 처리한다는 의미인가요??
0
지금 병렬처리될 수 있는 코드와 작업시간이 긴 JS 함수를 동시에 생각하시는 것 같은데, 저는 예시를 그렇게 든 적이 없긴 합니다.
코드 중에는 병렬처리될 수 있는 코드가 있다.
태스크 큐로 보내는 방식으로 작업시간이 긴 함수의 실행을 뒤로 미룰 수 있다.
이게 제가 설명한 것 전부이고요. 1,2가 동시에 일어나는 상황에서의 실행 순서는 코드에 따라 다릅니다. 일반적인 경우 1,2가 동시에 시작했다면 2가 먼저 실행되고 1이 실행됩니다.
실행이라고 함은, JS단에서 처리가 완료되는 것을 의미합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
논 블로킹(Non-blocking) 방식에 대한 근본적 이해를 돕기 위해서, 관련된 기존 질문과 답변 링크들을 찾아보았습니다. 논 블로킹 방식의 동작 원리와 관련하여 질문자님께서 제시한 내용과 유사한 주제에 대한 질문과 답변을 아래에서 참고하실 수 있습니다.
노드(Node.js)에서 논 블로킹(Non-blocking) 방식은 오래 걸리는 작업(예: 파일 시스템 접근, 네트워크 요청 등)을 처리할 때 사용되는 모델입니다. 이 모델의 핵심은 오래 걸리는 작업을 백그라운드에서 처리하도록 보내고, 작업이 완료되면 그 결과를 콜백 함수나 프로미스(Promise)를 통해 전달받는 것입니다. 이를 통해, 메인 스레드는 다른 요청을 계속 처리할 수 있어 애플리케이션이 멈추지 않고, 더 많은 요청을 동시에 처리할 수 있게 됩니다.
답변 링크:
1. 논블로킹과 이벤트 루프 - 이 답변은 백그라운드에서 처리되는 작업들(예: setTimeout)이 실제 어떻게 동시에 처리되는지에 대한 설명을 포함하고 있습니다. 자바스크립트 코드가 돌아가는 쓰레드는 하나뿐이지만 백그라운드에서는 여러 쓰레드를 사용할 수 있다고 언급하고 있습니다.
node에서 말하는 non-blocking에 대한 개념 문의 - 논 블로킹은 오래 걸리는 함수를 백그라운드로 보내는 방식으로 설명되어 있는데, 이 과정에서 node.js가 어떻게 논 블로킹 I/O를 처리하는지에 대한 자세한 설명이 포함됩니다.
비동기 코드 질문 - 이 부분은
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





