JS Deep Dive | 2022.01.04

invidia·2022년 1월 4일
0

TIL

목록 보기
24/29

42. 비동기 프로그래밍

정리

동기와 비동기

  • JS엔진은 하나의 실행 컨텍스트 스택을 가진다.

    • 하나의 태스크만 실행 가능하다.
      • 싱글 스레드 방식이다.
      • 시간이 오래 걸리는 태스크는 blocking 된다.
  • 동기 처리: 실행중인 태스크가 종료될 때까지 다음 태스크가 대기하는 방식

    • blocking 발생
  • 비동기 처리: 종료되지않더라도, 다음 태스크를 실행하는 방식

이벤트 루프와 태스크 큐

  • 이벤트 루프: 비동기 방식의 동시성을 지원하는 모델이다.

  • 브라우저 환경

    • JS 엔진
      • 힙: 객체가 저장된 메모리 공간
      • 콜 스택: 실행 컨텍스트 스택
    • 태스크 큐: 비동기 함수의 콜백이 보관되는 공간
    • 이벤트 루프: 콜 스택이 비었을 경우 태스크 큐에 대기중인 함수를 콜 스택으로 이동시키는 역할
    • Web API: 비동기 함수를 처리하는 API
    • 참조하면 좋은 사이트
  • JS 엔진은 싱글 스레드로 동작하지만, 이를 실행시키는 브라우저는 멀티 스레드로 동작하므로 비동기 처리가 가능하다.

  • Node.js 환경

  • Node.js 환경은 싱글 스레드이지만, libuv 라이브러리와 커널을 통해 비동기 처리가 가능하다.

느낀점

  • 예전에 공부했던 내용이지만, 좀 더 기초개념을 다지고 공부하니 모르는 용어 정리에 국한되지 않고 넓게 이해할 수 있었다.
    • Web API가 실행한다는 점
    • 브라우저 환경에 대한 설명만 나와있으므로 Node.js 환경은 다르다는 생각 -> 따로 찾아보는 계기

0개의 댓글