JavaScript) 동기, 비동기 / 블로킹, 논블로킹

zz1·2023년 11월 22일

코어 자바스크립트 CHAPTER 04_콜백 함수

동기적인 코드

현재 실행 중인 코드가 완료된 후에야 다음 코드를 실행하는 방식

비동기적인 코드

현재 실행 중인 코드의 완료 여부와 무관하게 즉시 다음 코드로 넘어가는 방식

CPU에 계산에 의해 즉시 처리가 가능한 대부분의 코드동기적인 코드이며, 별도의 요청, 실행 대기, 보류 등과 관련된 코드비동기적인 코드이다.

비동기적인 일련의 작업을 동기적으로, 혹은 동기적인 것처럼 보이게끔 처리해주는 장치를 마련하고자 ES6에서는 Promise, Generator 등이 도입됐고, ES2017에서는 async/await가 도입되었다.


동기/비동기 , 블로킹/논블로킹

  • 동기/비동기는 작업을 순차적으로 수행하는지에 대한 관점이다.
    - 동기: 요청한 작업에 대해 순서가 지켜짐.
    - 비동기: 요청한 작업에 대해 순서가 지켜지지 않을 수 있음.
  • 블로킹/논블로킹은 현재 작업이 block 되느냐에 따라 다른 작업을 수행할 수 있는지에 대한 관점이다.
    - 전체적인 작업의 흐름을 막는지 안 막는지
  • setTimeout 함수의 작업 완료 여부를 신경쓰지 않고 다음 작업 수행 -> 비동기
  • setTimeout 함수가 타이머 작업을 수행하기 위해 메인 함수를 블락하지 않고 백그라운드에서 별도로 처리 -> 논블로킹

출처: https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%EB%8F%99%EA%B8%B0%EB%B9%84%EB%8F%99%EA%B8%B0-%EB%B8%94%EB%A1%9C%ED%82%B9%EB%85%BC%EB%B8%94%EB%A1%9C%ED%82%B9-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC

0개의 댓글