[1분 면접] 동기와 비동기의 차이점
📌 면접 답변
동기와 비동기는 호출하는 함수의 작업 완료를 기다리는지 여부의 차이가 있다.
예를들어, 함수 A가 동기로 함수 B를 호출하면 A는 B의 작업이 완료될 때 까지 기다린다.
반면 함수 A가 비동기 함수로 B를 호출하면 A는 B의 작업 완료를 신경 쓰지 않고 따로 동작한다. (작업이 순차적으로 진행되지 않음)
📌 나의 답변
동기는 작업들이 하나로 동기화 되어 하나의 일이 끝날때까지 기다리고, 끝나고 난 후 순차적으로 일이 처리되는 것을 의미한다.
반면에 비동기는 작업들이 동기화 되어있는거와 달리, 작업이 실행 중이고 현재 CPU가 해당 작업이 끝날 때 까지 기다리는 중이라면, 해당 작업은 Call Stack에서 Task Queue로 넘어가 작업을 처리된다. 그리고 Call Stack의 작업이 끝나고 Task Queue에서 작업을 가져와 처리한다.
📌 나의 답변 수정
동기 방식에서는 작업이 순차적으로 실행되며, 이전 작업이 완료된 후에만 다음 작업이 실행
비동기 방식에서는 작업이 실행되는 동안 CPU가 해당 작업의 완료를 기다리지 않고, 다른 작업을 수행 할 수 있음
실행된 비동기 작업은 Web API 또는 OS 레벨에서 처리되며, 완료된 후 Task Queue에 등록된다.
이후 Event Loop가 Call Stack을 확인하고, Call Stack이 비워져 있으면 Task Queue에 작업을 꺼내어 Call Stack에 추가
📌 면접 질문 추가
블로킹과 동기의 차이점
동기 같은 경우 호출된 함수가 작업을 완료할 때까지 호출한 함수를 기다린다.
블로킹 같은 경우는 함수가 호출된 후, 호출한 함수의 결과를 기다리기 위해 실행을 멈추는 상태를 의미한다.
즉, 제어권이 반환되지 않고 대기하는 상황이다.