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