📝 면접 답변 보기
동기와 비동기는 '작업 결과를 누가 처리하냐'의 문제입니다.
동기는 호출한 쪽에서 결과를 직접 받아서 처리하고, 비동기는 콜백이나 이벤트를 통해 나중에 별도로 처리됩니다.
블로킹과 논블로킹은 '제어권을 언제 돌려주냐'의 문제입니다.
블로킹은 작업이 끝날 때까지 제어권을 반환하지 않아 대기하게 되고, 논블로킹은 작업 완료와 관계없이 즉시 제어권을 돌려줘서 다른 작업을 할 수 있습니다.
면접 질문 정리용 레포지토리
https://github.com/unifolio0/backend-interview-study.git
GitHub - unifolio0/backend-interview-study
Contribute to unifolio0/backend-interview-study development by creating an account on GitHub.
github.com
핵심 개념
동기(Synchronous) vs 비동기(Asynchronous)
관점 : 작업 결과를 누가 처리하는가?(호출되는 함수의 작업 완료 여부를 신경쓰는가)
- 동기 : 호출한 함수가 작업 결과를 직접 받아서 처리합니다. 메소드 A가 메소드 B를 호출했을 때, A의 실행 흐름 안에서 B의 결과를 기다리고 처리하는 방식입니다.
- 비동기 : 호출된 함수가 작업을 완료하면 콜백에나 이벤트를 통해 나중에 별도로 처리합니다. 메소드 A가 메소드 B를 호출하면, A는 B의 완료 여부와 관계없이 자신의 작업을 마치고, B의 결과는 나중에 다른 곳(콜백 함수)에서 처리됩니다.
블로킹(Blocking) vs 논블로킹(Non-blocking)
관점 : 제어권을 언제 돌려주는가?
- 블로킹 : 호출된 함수가 작업을 완료할 때까지 제어권을 돌려주지 않습니다. 메소드 A가 메소드 B를 호출했을 때, 메소드 B가 완료될 때까지 A는 다른 작업을 진행할 수 없습니다.
- 논블로킹 : 호출된 함수가 작업 완료 여부와 관계없이 즉시 제어권을 반환합니다. 메소드 A가 메소드 B를 호출했을 때, 메소드 B가 완료되지 않아도 제어권을 받아 다른 작업을 진행할 수 있습니다.
동기/비동기, 블로킹/논블로킹의 조합

동기 + 블로킹

가장 일반적인 함수 호출 방식입니다. 메소드 A에서 B를 호출했을 때 B의 작업 완료 결과를 A의 실행흐름 안에서 받은 뒤 처리하고(동기), B가 실행되는 동안 A는 실행을 멈춥니다(블로킹).
동기 + 논블로킹

메소드 A에서 B를 호출했을 때 B의 작업 완료 결과를 A의 실행흐름 안에서 받은 뒤 처리하지만(동기), B가 실행되는 동안 A는 실행을 멈추지 않고 다른 작업들을 수행합니다(논블로킹).
동기 + 논블로킹은 게임에서 자주 활용됩니다. 게임 로딩창을 생각해보면 로딩바가 채워지는 동안 프로그램이 멈추는 것이 아닌 기타 다른 작업들(애니메이션, 직업 확인, 정보 제공 등)이 수행됩니다. 그리고 로딩바가 다 채워지면 게임이 시작이 됩니다.
즉, 로딩바가 채워지는 동안(데이터를 다운받는 동안) 다른 작업들을 수행하면서 로딩바가 다 채워지기를 기다립니다. 그 뒤 로딩바가 다 채워지면 그제서야 완료되고 게임이 시작되는 것이 동기 + 논블로킹의 대표적인 예시입니다.
비동기 + 블로킹

메소드 A에서 B를 호출했을 때 B의 작업 완료 결과는 신경쓰지 않고 콜백함수(or 이벤트)로 처리하도록 하고(비동기), B가 실행되는 동안 A는 실행을 멈춥니다(블로킹).
비동기 + 블로킹은 비효율적이라 거의 쓰이지 않습니다. B의 결과를 필요로 하지 않는데 B가 완료될 때까지 기달려야 하는 것은 불필요하기 때문입니다.
비동기 + 논블로킹

메소드 A에서 B를 호출했을 때 B의 작업 완료 결과는 신경쓰지 않고 콜백함수(or 이벤트)로 처리하도록 하고(비동기), B가 실행되는 동안 A는 실행을 멈추지 않고 다른 작업들을 수행합니다(논블로킹).
'CS' 카테고리의 다른 글
| @Async는 어떻게 동작하나요? (0) | 2025.10.06 |
|---|---|
| 컴퓨터의 병렬 처리 기술 (5) | 2025.07.27 |
| [매일메일] 객체 지향 프로그래밍이란 무엇이고, 어떤 특징이 있나요? (0) | 2025.03.31 |
| [매일메일] PRG 패턴에 대해서 설명해 주세요. (0) | 2025.03.24 |