CS

[CS] 동기와 비동기

waveTocode 2024. 4. 16. 00:39

오늘은 개발을 하면서 많이 들어본 동기와 비동기에 대해서 알아보겠습니다

 

동기(Synchronous)
작업이 순차적으로 진행되는 것을 의미
즉, 한 작업이 시작되면 해당 작업이 완료될 때 까지 다른 작업이 기다려야 함을 의미합니다

장점 단점
설계가 매우간단하고 직관적입니다 여러 작업이 동시에 실행되어야하는 경우
각 작업의 완료를 기다리는 동안 시간이 소요되어
전체 프로세스의 성능이 저하될 수 있습니다
한 작업이 지연되면 다른 작업들도 모두 지연되는 문제가 발생합니다

 

 

비동기(Asyncchronous)
작업이 독립적으로 실행되는 것을 의미
즉 작업의 완료여부를 기다리지 않고 다른 작업을 실행할 수 있는 방식을 의미합니다

장점 단점
요청에 따른 결과가 반환되는 시간 동안 다른 작업을 수행할 수 있으므로 자원을 효율적으로 사용가능합니다 동기보다 설계가 복잡합니다

 

비동기 방식은 주로  I/O 작업이나 네트워크 요청과 같이 시간이 오래 걸리는 작업에 유용합니다

비동기 방식은 콜백(callback),프로미스(Promise),async/await 등의 메커니즘을 통해 구현될 수 있습니다


블록과 논블록

블록
동기의 개념에서 만들어진 상태

자신의 작업을 하닥 다른 작업 주체가 하는 작업의 시작부터 끝까지 기다렸다가 다시 자신의 작업을 시작하는 것

 

논블록 
비동기 개념에서 만들어진 상태
다른 주체의 작업과 상관없이 자신의 작업을 계속 하는 것