동기와 비동기의 주된 차이는 작업의 진행 방식에 있습니다. 동기는 순차적이고 블록킹되는 방식으로 작업을 처리하며, 비동기는 비블록킹되고 병렬적으로 작업을 처리합니다. 동기는 주로 의존성이 높은 상황에서 사용되고, 비동기는 의존성이 낮거나 병렬 처리가 필요한 상황에서 사용됩니다.
1. 동기 (Synchronous):
동기적인 작업은 순차적으로 진행됩니다. 한 작업이 시작되면 해당 작업이 완료될 때까지 다음 작업이 기다립니다.
작업 간에 의존성이 있고, 순서가 중요한 경우 주로 사용
동기 코드는 간단하고 직관적일 수 있지만, 여러 작업이 순차적으로 실행되므로 전체 시스템의 성능이 저하
2. 비동기 (Asynchronous):
비동기적인 작업은 한 작업이 시작되더라도 다음 작업이 기다리지 않고 계속 진행
작업 간에 의존성이 낮고, 병렬적인 실행이 가능한 경우 주로 사용
비동기 코드는 일반적으로 이벤트 기반, 콜백 함수, 프로미스, 비동기 함수 (async/await) 등을 통해 구현
꼬리질문 예상
Q. 비동기 작업에서 콜백 함수가 어떻게 동작하는지 설명해보세요.
A. 비동기 작업에서 콜백 함수는 비동기 작업이 완료되면 호출되는 함수입니다.
콜백 함수를 사용함으로써 다른 작업을 기다리지 않고 비동기 코드를 계속 실행할 수 있습니다.
Q. 프로미스(Promise)가 무엇이며, 어떻게 사용되는지 설명해주세요.
A. 프로미스는 비동기 작업의 완료 또는 실패와 같은 결과를 다루기 위한 객체입니다.
성공 시와 실패 시에 각각 처리할 함수를 등록할 수 있어서 콜백 지옥(callback hell)을
방지하고 코드를 보다 깔끔하게 작성할 수 있습니다. 프로미스는 then()과 catch() 메서드를 통해 결과를 처리합니다.
Q. 비동기 함수에서 async/await는 어떻게 사용되며 어떤 장점이 있나요?
A. async 키워드로 선언된 함수 내에서 await 키워드를 사용하면 해당 비동기 작업의 완료를 기다릴 수 있습니다. 이는 코드를 동기식으로 작성하는 것과 유사한 구조를 가지며, 가독성을 향상시키고 에러 핸들링을 간편하게 만듭니다. 또한 여러 비동기 호출을 병렬적으로 처리할 수 있어 성능을 최적화할 수 있습니다.
Q. 비동기 처리에서 이벤트 기반 프로그래밍이 무엇이며, 어떻게 작동하는지 설명해주세요.
이벤트 기반 프로그래밍은 비동기 처리를 구현하기 위한 하나의 패러다임으로, 이벤트가 발생할 때마다 콜백 함수가 호출되는 방식을 기반으로 합니다. 주로 사용자의 입력, 외부 시스템에서의 데이터 수신, 파일의 읽기/쓰기 완료 등과 같은 이벤트에 반응하여 비동기 작업을 수행합니다.
예를 들어, 웹 브라우저에서 버튼 클릭, 마우스 이동, HTTP 요청 등의 이벤트가 발생할 때마다 등록된 이벤트 핸들러 함수가 실행되어 특정 동작을 수행합니다. 이를 통해 사용자 경험을 향상시키고 비동기적인 작업을 효과적으로 처리할 수 있습니다.
'cs 공부' 카테고리의 다른 글
| DDD (Domain-Driven Design) (1) | 2023.12.18 |
|---|---|
| 프레임워크와 라이브러리의 차이 (0) | 2023.12.18 |
| OSI 7계층 (0) | 2023.12.15 |
| 객체 지향 프로그래밍이란 무엇이고 어떻게 활용할 수 있나요? (0) | 2023.12.12 |
| 대용량 트래픽 발생 시 어떻게 대응해야 하나요? (0) | 2023.12.12 |