본문 바로가기

공부내용 정리/프로그래밍

동기(sync)와 비동기(async)의 개념과 차이

1. 동기(synchronous) 

- 동기적 작업은 순차적으로 실행되며, 한 작업이 완료되기를 기다린 다음, 다음 작업이 실행된다.

- 작업이 순차적으로 진행되기 때문에 각 작업은 이전 작업의 완료를 기다린다.

- 일반적으로 동기 작업은 간단하고 직관적인 프로그래밍 모델을 제공하지만, 대규모 및 시간이 오래걸리는 작업의 경우에는 성능 및 응답시간 문제를 일으킬 수 있다.

 

2. 비동기(asyncronous) 

- 비동기적 작업은 작업이 시작된 후 즉시 다음 작업으로 넘어갈 수 있으며, 결과가 나중에 도착할 수 있다.

작업의 완료 여부를 기다리지 않고 다른 작업을 계속 수행할 수 있다.

- 비동기 작업은 주로 I/O 작업 또는 네트워크 요청과 같은 지연 시간이 걸리는 작업에 유용하다. 프로그램이 블로킹되지 않고 다른 작업을 수행할 수 있으므로 전체 응용 프로그램의 효율성과 응답시간이 향상된다.

- 비동기 코드는 일반적으로 콜백 함수, 프로미스, async/await 과 같은 도구를 사용하여 구현된다.

 

동기 방식에서는 작업이 완료될 때까지는 다른 작업을 수행하지 않기 때문에 다른 작업에 차단(blocking)이 걸릴 수 있다.

반면에 비동기 방식에서는 작업이 완료될 때까지 다른 작업을 수행하고, 결과가 반환되면 해당 작업에 대한 콜백(callback)함수를 호출하여 결과를 처리할 수 있다.(처리 성능 향상됨)

비동기 프로그래밍은 다양한 컨텍스트에서 중요하며, 웹애플리케이션에서는 사용자 경험을 향상시키는데 도움이 된다.

그렇지만 비동기 코드는 복잡성을 증가시킬 수 있으며, 오류처리와 디버깅에 어려움이 있을 수 있다.

 

참고)
Steady-Dev, Javascript 비동기 핸들링, https://www.datoybi.com/asynchronous-js/
서현지킴이의 분당라이프, sync(동기) & async(비동기) 차이 정리, https://sh-safer.tistory.com/339