동기와 비동기는 작업들이 어떤 순서로 실행되는지를 설명하는 개념이다
동기
- 동기 방식은 한 작업이 완료된 후에 다음 작업이 시작된다(작업들 사이에 순서가 있다)
- 특정 데이터 요청 후 해당 데이터가 도착할 때까지 기다린 뒤 이후 작업을 진행하는 방식
장점
- 코드의 흐름이 직관적이고 이해하기 쉽다(작업이 순차적으로 실행되어 읽기 쉽다)
- 디버깅이 비교적 간단하다. 코드의 흐름이 단순하기 때문
단점
- 앞선 작업의 지연 시간 동안 프로그램은 대기 상태에 머무르게 된다. (대기시간 연장)
- UI가 멈추거나 응답하지 않는 형식을 초래할 수 있다. (동기 작업이 오래 걸릴 경우)
비동기
- 비동기 방식은 여러가지 작업들이 동시에 실행되며 특정 순서를 따르지 않는다.
- 특정 데이터 요청 후 바로 다음 로직을 실행한다
장점
- 앞선 작업의 지연 시간 동안도 다른 일을 할 수 있으므로 자원 활용성이 좋아진다.
- 백그라운드에서 처리하여 계속해서 사용자 입력에 반응할 수 있게 된다.
단점
- 여러가지 일들이 병렬적으로 진행되므로 코드의 흐름 파악과 오류 처리가 복잡해질 수 있다.
- 콜백 함수나 프로미스 등 비동기 처리를 위한 패턴을 사용해야 하며, 이로 인해 코드가 복잡해질 수 있다.
'CS' 카테고리의 다른 글
[프로그래밍] MAS란? 마이크로서비스 아키텍처 (0) | 2023.09.30 |
---|---|
[프로그래밍] DDD란? (Domain-Driver Design) (0) | 2023.09.29 |
[프로그래밍] 절차지향과 객체지향 프로그래밍이란 (0) | 2023.09.29 |
[프로그래밍] 블로킹과 논블로킹의 차이 (0) | 2023.09.29 |
교착상태란? (0) | 2023.07.12 |