오늘은 개발을 하다 많이 접하게 되는 동기와 비동기에 대해 알아보도록 하겠습니다
동기(Synchronous)
작업이 순차적으로 진행되는 것을 의미
즉, 한 작업이 시작되면 해당 작업이 완료될 때 까지 다른 작업이 기다려야 한다
장점 | 단점 |
설계가 매우간단하고 직관적이다 | 여러 작업이 동시에 실행되어야하는 경우 각 작업의 완료를 기다리는 동안 시간이 소요되어 전체 프로세스의 성능이 저하될 수 있다 |
한 작업이 지연되면 다른 작업들도 모두 지연되는 문제가 발생한다 |
비동기(Asyncchronous)
작업이 독립적으로 실행되는 것을 의미
즉 작업의 완료여부를 기다리지 않고 다른 작업을 실행할 수 있는 방식을 의미
장점 | 단점 |
요청에 따른 결과가 반환되는 시간 동안 다른 작업을 수행할 수 있으므로 자원을 효율적으로 사용가능 | 동기보다 설계가 복잡 |
비동기 방식은 주로 I/O 작업이나 네트워크 요청과 같이 시간이 오래 걸리는 작업에 유용
비동기 방식은 콜백(callback),프로미스(Promise),async/await 등의 메커니즘을 통해 구현될 수 있음
블록과 논블록
블록
동기의 개념에서 만들어진 상태
자신의 작업을 하닥 다른 작업 주체가 하는 작업의 시작부터 끝까지 기다렸다가 다시 자신의 작업을 시작하는 것
논블록
비동기 개념에서 만들어진 상태
다른 주체의 작업과 상관없이 자신의 작업을 계속 하는 것