CS

[프로그래밍] 동기와 비동기 방식의 차이점

juhwan 2023. 9. 29. 03:27

동기와 비동기는 작업들이 어떤 순서로 실행되는지를 설명하는 개념이다

동기

  • 동기 방식은 한 작업이 완료된 후에 다음 작업이 시작된다(작업들 사이에 순서가 있다)
  • 특정 데이터 요청 후 해당 데이터가 도착할 때까지 기다린 뒤 이후 작업을 진행하는 방식

장점

  1. 코드의 흐름이 직관적이고 이해하기 쉽다(작업이 순차적으로 실행되어 읽기 쉽다)
  2. 디버깅이 비교적 간단하다. 코드의 흐름이 단순하기 때문

단점

  1. 앞선 작업의 지연 시간 동안 프로그램은 대기 상태에 머무르게 된다. (대기시간 연장)
  2. UI가 멈추거나 응답하지 않는 형식을 초래할 수 있다. (동기 작업이 오래 걸릴 경우)

비동기

  • 비동기 방식은 여러가지 작업들이 동시에 실행되며 특정 순서를 따르지 않는다.
  • 특정 데이터 요청 후 바로 다음 로직을 실행한다

장점

  1. 앞선 작업의 지연 시간 동안도 다른 일을 할 수 있으므로 자원 활용성이 좋아진다.
  2. 백그라운드에서 처리하여 계속해서 사용자 입력에 반응할 수 있게 된다.

단점

  1. 여러가지 일들이 병렬적으로 진행되므로 코드의 흐름 파악과 오류 처리가 복잡해질 수 있다.
  2. 콜백 함수나 프로미스 등 비동기 처리를 위한 패턴을 사용해야 하며, 이로 인해 코드가 복잡해질 수 있다.