ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 42_Synchronous & Asynchronous
    모던 자바스크립트 딥 다이브 독학 2023. 12. 27. 16:21

    동기 처리와 비동기 처리

    • 자바스크립트 엔진은 단 하나의 실행 컨텍스트 스택을 갖는다. (한 번에 하나의 작업만 실행할 수 있는 싱글 스레드 방식으로 동작한다)
    • 처리에 시간이 걸리는 작업을 실행하는 경우 블로킹(작업 중단)이 발생한다.
    • 동기 처리: 현재 실행 중인 작업이 종료할 때까지 다음에 실행될 작업이 대기하는 방식
      • 작업을 순서대로 하나씩 처리하므로 실행 순서가 보장되는 장점
      • 앞선 작업이 종료할 때까지 이후 작업이 블로킹되는 단점
    • 비동기 처리: 현재 실행 중인 작업이 종료되지 않은 상태라 해도 다음 작업을 곧바로 실행하는 방식
      • 작업의 실행 순서가 보장되지 않는 단점
      • 블로킹이 발생하지 않는 장점
      • 타이머 함수인 setTimeout, setInterval, HTTP요청, 이벤트 핸들러는 비동기 방식으로 동작

    이벤트 루프와 태스크 큐

    브라우저 환경이 제공

    • 이벤트 루프: 자바스크립트의 동시성을 지원하는 것
      • 자바스크립트 엔진의 2가지 영역
        • 콜 스택
    • 태스크 큐
    • 비동기 함수의 콜백 함수는 태스크 큐에 푸시되어 대기하다가 콜 스택이 비게 되면(전역 코드 및 명시적으로 호출된 함수가 모두 종료하면) 콜 스택에 푸시되어 실행된다.
    • 자바스크립트는 싱글 스레드 방식으로 동작(브라우저가 아닌 브라우저에 내장된 자바스크립트 엔진), 브라우저는 멀티 스레드로 동작
    • 브라우저와 자바스크립트 엔진의 협력으로 비동기 함수를 실행한다.

    '모던 자바스크립트 딥 다이브 독학' 카테고리의 다른 글

    44_REST API  (0) 2024.01.03
    43_Ajax  (0) 2024.01.01
    41_Timer  (0) 2023.12.25
    40_Event  (1) 2023.12.20
    39_Dom  (0) 2023.12.14
Designed by Tistory.