inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

"AI 딸깍의 시대" 원리로 돌파하는 Node.js와 CS Part1 - V8과 코어 해체기

[강의 노트] 4강: 싱글 스레드의 한계를 넘다: 콜 스택, libuv, 이벤트 큐, 그리고 이벤트 루프 6단계 심층 해부

call stack 표현이 잘못표현된것이 아닌가요?

2

hanumoka

작성한 질문수 14

0

5. [실전 훈련] 사고 실험: 상태 누적 시각화 추적하기

예시에서

[Step 2] setTimeout과 Promise 등록
등을 보면 Call Stack이 비어있음 이라고 표현하셨는데, main 호출후 -> 동기코드 완료될때까지. Call Stack은 엄밀히 비어있는 상태가 아니지 않나요?
즉 console.log("D") 가 출력되기 전까지는
콜 스택이 비워지는 상태가 발생할수 없지 않나요?

 혹시 제가 잘못 알고 있을수도 있으니
조심히 여쭙습니다.

javascript node.js 컴퓨터-구조 frontend backend

답변 1

0

인프런 AI 인턴

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

call stack 표현과 관련하여 질문해 주셔서 감사합니다. Call Stack의 개념은 JavaScript의 비동기 처리에서 이해해야 할 중요한 부분이죠. 질문하신 내용을 바탕으로, 여기에서 조금 더 자세히 설명해 드리겠습니다.

Call Stack의 이해

  1. Call Stack:

    • Call Stack은 현재 실행할 함수와 관련된 작업을 추적하는 구조입니다. 동기 코드가 실행될 때 이 Stack에 함수 호출이 쌓이고, 함수가 종료되면 해당 스택이 비워집니다.
  2. 주어진 예시에서의 상황:

    • setTimeout이나 Promise는 비동기적으로 작업을 처리합니다. 이 비동기 작업은 Call Stack에 바로 올라가지 않으며, 태스크 큐나 마이크로태스크 큐에 등록되어 비동기 처리를 대기합니다.
    • 메인 실행 컨텍스트: 메인 코드 실행 시, 호출 스택(Call Stack)에 엔트리가 쌓이고, 즉시 실행되는 동기 코드(console.log("D"))의 실행이 완료되면 스택은 비워집니다.
  3. 이와 관련한 개념:

    • console.log("D")와 같은 동기 코드가 실행 중일 때는 해당 호출 스택에 남아 있으나, 이 코드가 실행을 마치면 Call Stack은 비워지게 됩니다.
    • 이후 비동기 태스크(awaits setTimeout 및 Promise)는 이벤트 루프에 의해 Call Stack이 비워진 후 들어오게 됩니다.

즉, 기본적으로 console.log("D")와 같은 마지막 동기 코드가 실행될 때까지 Call Stack은 비어있지 않습니다. 올바른 처리 흐름을 이해하는 것은 비동기 JavaScript 코드를 작성하는 데 매우 중요하며, 해당 부분을 명확히 이해하시려는 노력은 매우 칭찬할 만합니다.

자세한 사항은 다음의 Node.js와 비동기 처리 관련 자료를 참조해 보시면 추가적인 도움이 될 수 있습니다:
- Node.js Event Loop Documentation
- JavaScript Call Stack, Event Loop Basics

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

추천해주신 책에 대해 문의드립니다.

0

4

0

전자책으로 구매인증 가능할까요?

0

33

1

강의자료가 누락됐어요

0

40

2

cache관련 질문 드립니다

0

26

1

React 와 Virtual DOM 의 이야기 영상 실행이 안됩니다.

0

29

1

형 책 어떻게 받아?

1

47

1

PPT 자료 공유 받을 수 있을까요?

0

29

1

4주차 미션 게시판이 안보여요~

0

41

2

강의 일정 및 수업 자료 공유 관련 문의드립니다!

0

32

1

6번 질문

0

52

2

일반 강의와 차이점?

1

37

1

수강완료 후 문의 드립니다.

1

41

2

!= 연산자의 역할

0

32

1

JpaCursorItemReader의 정렬 조건 부재의 영향

1

38

2

sizeof는 컴파일 타임 연산자라서 CPU를 사용치 않는다

0

29

2

중요하진 않지만 설명하신부분에서 안된부분..

0

28

0

"컴파일 시점에 없는 값을 어떻게 참조할 것인가?" 섹션

1

47

2

강의 듣는 순서가 어떻게 되나요?

0

46

1

stopPropagation()에 대해서 질문 있습니다.

0

46

2

혹시 다음 강의 제작 예정된 것들이 있을까요?

0

69

1

1강 질문

0

60

2

ai가 만든 강의인가요?

0

115

1

3강 질문

0

73

2

2강 nodejs 3단계 설명 질문

0

82

1