비동기 프로그래밍

2022. 7. 10. 20:14·JavaScript
728x90
반응형

동기 처리와 비동기 처리

자바스크립트 엔진은 단 하나의 실행 컨텍스트 스택을 갖는다

-> 함수를 실행할 수 있는 창구가 단 한개 -> 동시에 2개 이상의 함수를 실행 X

 자바스크립트 엔진은 한 번에 하나의 태스크만 실행할 수 있는 싱글 스레드

싱글 스레드는 한 번에 하나의 태스크만 실행할 수 있다-> 처리에 시간이 걸리는 태스크를 실행하는 경우 블로킹이 발생

 

[!] 브라우저에 내장된 자바스크립트의 엔진이 싱글 스레드이고 브라우저는 멀티 스레드로 동작함 

만약, 모든 자바스크립트 코드가 자바스크립트 엔진에서 싱글 스레드 방식으로 동작하면 비동기로 동작이 불가능하다

 

동기 처리 방식

태스크를 하나씩 처리 -> 실행 순서 보장 / 1번 태스크 종료때까지 2번 태스크 블로킹

 

비동기 처리 방식

태스크 상태 상관없이 실행 -> 순서 보장 X

ex) setTimeout,setInterval,HTTP 요청, 이벤트 핸들러

 

이벤트 루프와 태스트 큐

자바스크립트는 싱글 스레드로 동작하지만, 브라우저의 동작을 보면 많은 태스크가 동시에 처리되는 것처럼 보인다

자바스크립트의 동시성을 지원해주는 것이 이벤트 루프다

-이벤트 루프는 브라우저에 내장되어 있는 기능중 하나

 

출처 : https://blog.sessionstack.com/how-does-javascript-actually-work-part-1-b0bacc073cf

 

*콜 스택 

- 실행 컨텍스트 스택이 바로 콜 스택 (함수를 호출하면 함수 실행 컨텍스트가 순차적으로 콜 스택에 푸시되어 순차적 실행)

 

*힙 

- 객체가 저장되는 메모리 공간. 콜 스택의 요소인 실행 컨텍스트는 힙에 저장된 객체를 참조

객체는 메모리 공간의 크기를 런타임에 동적 할당 ( 크기가 정해져 있지 않기 때문)해야 한다

그래서 힙은 구조화 X

 

728x90
반응형
저작자표시 (새창열림)

'JavaScript' 카테고리의 다른 글

REST API  (2) 2022.07.11
Ajax  (0) 2022.07.11
DOM/디바운스,스로틀  (0) 2022.07.07
브라우저의 렌더링 과정  (0) 2022.07.07
Set과 Map  (0) 2022.06.30
'JavaScript' 카테고리의 다른 글
  • REST API
  • Ajax
  • DOM/디바운스,스로틀
  • 브라우저의 렌더링 과정
Hun-bot
Hun-bot
IT를 중심으로 다양한 것
  • Hun-bot
    로봇이 만드는 눈사람
    Hun-bot
  • 전체
    오늘
    어제
    • All Article (128)
      • Programmers (6)
        • TIP (1)
        • SQL (2)
        • LV1 (1)
        • LV2 (2)
        • LV3 (0)
      • Baekjoon (31)
        • Bronze (10)
        • Silver (19)
        • Gold (2)
        • Platinum (0)
        • Diamond (0)
      • Leetcode (0)
        • Easy (0)
        • Medium (0)
        • Hard (0)
        • SQL (0)
      • 알고리즘(Algorithm) (42)
      • JavaScript (40)
      • Linux (7)
      • JSP (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      프로그래머스
      티스토리챌린지
      SQL
      JavaScript #Set #Collection
      고득점 Kit
      알고리즘
      자바스크립트 #연습문제
      JSP #Vscode #톰켓 #Tomcat #Java #Web #jdk
      JS #클래스
      LeetCode #JS #Javascript #Algorithm
      Programmers
      JS #JavaScript #프로그래머스 #알고리즘
      JS #JavaScript #프로그래머스 #카카오
      c++
      리눅스
      JS #프로그래머스 #숫자의표현 #알고리즘
      오블완
      프로그래머스 #자바스크립트 #JS
      async await #js #문법 #자바스크립트 #비동기
      JS #javascript #객체 #Object
      리눅스 #입문
      Javascript
      백준
      BaekJoon
      알고리즘 #Algorithm
      Vue #Vue.js #정리
      Algorithm
      Python #알고리즘
      JS #정규표현식
      자바스크립트
    • 최근 댓글

    • hELLO· Designed By정상우.v4.10.3
    Hun-bot
    비동기 프로그래밍
    상단으로

    티스토리툴바

    티스토리툴바