동기 처리와 비동기 처리

이상철·2021년 10월 3일
0

JavaScript

목록 보기
10/12
post-thumbnail

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

이 말은 함수를 실행할 수 있는 창구가 단 하나이며, 동시에 2개 이상의 함수를 실행할 수 없다는 것을 의미합니다.

자바스크립트 엔진은 한 번에 하나의 테스크만 실행할 수 있는 싱글 스레드 방식으로
동작합니다.

싱글스레드 방식은 한 번에 하나의 태스크만 실행할 수 있기 때문에 처리에 시간이 걸리는 태스크를 실행하는 경우 블로킹(작업중단)이 발생합니다.

이때 현재 실행 중인 태스크가 종료할 때까지 다음에 실행 될 태스크가 대기하는 방식을 동기처리 라고 합니다.

동기 처리 방식과 비동기 처리방식

태스크를 순서대로 하나씩 처리하므로 실행 순서가 보장된다는 장점이 있지만,
앞선 태스크가 종료할 때까지 이후 태스크들이 블로킹되는 단점이 있습니다.

반대로 현재 실행 중인 태스크가 종료 되지 않은 상태라고 해도 다음 태스크를 곧바로 실행하는 방식을 비동기 처리라고 합니다.

동기 처리 방식과 비동기 처리 방식의 장/단점

동기 처리 방식은 태스크를 순서대로 하나씩 처리하므로 실행 순서가 보장된다는 장점이 있지만, 앞선 태스크가 종료될 때까지 이후 태스크들이 블로킹 되는 단점이 있습니다. 비동기 처리 방식은 현재 실행 중인 태스크가 종료되지 않은 상태라고 해도
다음 태스크를 곧바로 실행하므로 블로킹이 발생하지 않는다는 장점이 있지만 태스크의 실행 순서가 보장되지 않는 다는 단점이 있다.

마지막으로

타이머 함수인 setTimeout과 setInterval, HTTP요청, 이벤트 핸들러는 비동기 처리방식으로 동작한다.

앞으로 설명할 async/await과 관련해서 사전에 알아두면 좋을것 같아서 포스팅해봤다.

출처 - 모던 자바스크립트 DEEP DIVE -이웅모

profile
헤더부터 푸터까지!!!

0개의 댓글