• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

비동기와 논블록은 동일한 의미로 생각하고 넘어가도 되나요?

21.05.18 21:30 작성 조회수 341

3

어떤 책에서 보면 비동기와 논블록은 다른 것이라고 설명이 되어 있었는데, 엄밀하게 알고 넘어가야하는 개념은 아닌가요? 

답변 2

·

답변을 작성해보세요.

5

보통 사용할 때 [블로킹+동기]  vs [논블로킹+비동기]로
짝지어서 사용하는 경우가 많지만
그렇다고 블로킹 <-> 동기가 동일한 의미는 아닙니다.
C# 강의에서는 그 정도로 깊이 들어갈 필요가 없어서
따로 언급을 안 하지만 C++ 강의에서는 해당 내용도 정밀하게 다룹니다.

블로킹 vs 논블로킹은 말 그대로 함수가 '바로' 호출이 완료되는지 여부를 나타내고
동기 vs 비동기는 우리가 요청한 일이 '당장' 실행되는지, '지연되어' 호출될 수 있는지를 의미합니다.
(즉 함수를 호출할 때 입출력이 동시에 실행되느냐? 가 동기/비동기를 구분짓는 핵심입니다)

어떤 사람한테 질문을 해서 답을 듣는데,
전화를 걸어서 답장을 듣는다면 바로 답장을 실시간으로 들을테고
이메일로 보내면 1주일 후에 답장이 올 수도 있겠죠.
따라서 전화 = 동기, 이메일 = 비동기에 비유할 수 있습니다.

반면 블로킹/논블로킹은 말 그대로 함수가 바로 빠져나오는지를 의미합니다.
논블로킹의 경우 무조건 빠져나오고 성공/실패 여부를 판단하는 식으로 구현되고
블로킹은 끝장을 볼때까지 함수가 대기를 타서,
함수가 반환되면 입출력 결과를 바로 확인을 수가 있습니다.

0

루트님의 프로필

루트

질문자

2021.06.11

답변정말 감사드립니다 ㅎㅎ 정말 많은 도움이 되네요