네트워크

동기와 비동기 블로킹과 논 블로킹

realtrynna 2022. 11. 2. 19:54

자바스크립트는 싱글 스레드 기반 언어다. 이론적으로 여러 작업을 동시에 처리할 수 없으며 하나의 콜 스택과 실행 컨텍스트를 가진다. 한 번에 하나의 코드만 실행할 수 있으며 만약 브라우저에서 사용자의 요청을 모두 동기 방식으로 처리하면 어떨까. 하나의 작업이 실행되어 완료되는 시점까지 다른 그 어떤 작업도 실행될 수 없으므로 말이 안 된다. 자바스크립트가 싱글 스레드임에도 논 블로킹 비동기 작업이 가능한 이유는 이벤트 루프다. 이벤트 루프와 밀접하게 연관돼있는 동기와 비동기 블로킹과 논 블로킹을 포스팅해보자!

 

동기와 비동기 블로킹과 논 블로킹

보통 동기/블로킹 & 비동기 논/ 블로킹으로 많이 알려져있지만 각각의 단어가 의미하는 내용이 다르므로 명확히 짚고넘어간다.

 

동기/비동기: 프로세스 실행 순서 보장에 대한 메커니즘

블로킹/논 블로킹: 프로세스의 유휴 상태에 대한 정보

 

> 유휴 프로세스: 시스템 상에서 사용되고 있지 않은 프로세스를 의미 즉 놀고 있는(idle) CPU를 의미

 

동기

진행되는 작업과 결과가 한자리에서 일어나며 작업과 동시에 반환값이 기대되는 경우를 의미한다. 순차적으로 실행되며 현재 진행되고 있는 작업이 완료되어 응답을 반환 후 다음 작업이 진행된다. 실행되고 있는 코드가 다음 코드의 실행을 막으므로 블로킹

 

 

 

비동기

진행되고 있는 작업의 완료 여부와 무관하게 다음 작업이 실행되며 작업과 동시에 반환값이 기대되지 않는다. 병렬적으로 실행되며 진행되고 있는 코드가 다음 코드의 작업을 막지 않으므로 논 블로킹

 

 

 

참고 자료

https://www.devh.kr/2021/JavaScript-Visualized-Event-Loop/

https://chanyeong.com/blog/post/44

'네트워크' 카테고리의 다른 글

사용자(클라이언트)를 식별하는 네트워크 헤더  (1) 2023.10.10
webRTC  (0) 2022.12.01
OSI 7 Layer  (0) 2022.10.09
URI URL  (0) 2022.10.05
JWT  (0) 2022.09.25