IT/면접

Q. 동기와 비동기의 차이, 비동기프로그램이의 필요성

뀨뿌뀨뿌 2023. 8. 11. 14:48

❓동기와 비동기의 차이

1. 동기(Synchronous)
- 동기식 실행은 한 작업이 완료될 때까지 다음 작업이 기다려야 하는 실행 방식을 말함
- 코드의 실행 순서와 결과가 예측하기 쉽다는 장점이 있지만, 한 작업이 많은 시간을 요구하면 그 동안 전체 시스템이 대기 상태에 있어야함

2. 비동기(Asynchronous)
- 비동기식 실행은 현재 작업의 완료 여부와 상관없이 다음 작업을 시작하는 실행 방식을 말함
- 여러 작업을 동시에 처리할 수 있어 효율적이지만 코드의 실행 순서와 결과가 복잡해질 수 있으며 동기화 문제가 발생할 수 있음

❓비동기 프로그래밍의 필요성

- 효율성: 특히 I/O 바운드 작업(ex. 네트워크 통신, 디스크 작업)에서 대기 시간이 많을 때, 이 대기 시간 동안 다른 작업을 수행함으로써 자원을 효율적으로 사용할 수 있음
- 응답성: 사용자 인터페이스가 있는 애플리케이션에서 긴 작업을 처리할 때, 비동기적으로 처리하면 사용자 인터페이스가 멈추지 않고 사용자의 다른 요청에 응답할 수 있음
- 병렬 처리: 멀티코어 프로세서의 이점을 최대화하기 위해 여러 작업을 동시에 실행할 수 있음
- 스케일링: 서버 애플리케이션에서 동시에 많은 요청을 처리해야 할 때, 각 요청을 비동기적으로 처리하면 시스템 리소스를 더 효율적으로 활용할 수 있음
- but! 비동기 프로그래밍은 복잡성을 증가시킬 수 있기 때문에, 필요한 상황과 문제에 따라 적절하게 동기 및 비동기 방식을 선택하는 것이 중요함

동기는 한 작업이 끝나기를 기다린 후에 다음 작업이 시작되는 방식입니다. 이로 인해 실행 순서가 명확하지만, 특정 작업이 오래 걸릴 경우 전체 프로세스가 대기하게 됩니다.
비동기는 현재 작업이 완료될 때까지 기다리지 않고 다음 작업을 바로 시작합니다. 이렇게 함으로써 여러 작업을 동시에 진행할 수 있어 효율적입니다.
비동기 프로그래밍은 효율성과 응답성을 향상시킬 수 있습니다. 예를 들어, 사용자 인터페이스에서 긴 작업을 비동기적으로 처리하면 UI가 멈추지 않아 좋은 사용자 경험을 제공할 수 있습니다. 또한, 병렬 처리나 서버에서의 많은 요청 처리 등에 유리합니다. 그러나 선택 시 상황에 따른 복잡성도 고려해야 합니다.