inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

Listener

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

해결된 질문

543

가나파이

작성한 질문수 52

3

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

C# network unity

답변 2

5

Rookiss

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

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

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

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

0

가나파이

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

TLS 질문드립니다.

0

53

2

SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.

0

56

2

Unity Span

0

82

2

XML, Dll 차이점

0

110

2

Session 질문입니다

0

83

1

Write Read 커서 키워드

0

78

1

더미 클라이언트 수에 따른 OnDisconnect 발생

0

73

2

네트워크 Send 전담 스레드 배치

0

100

2

UnhandledException 으로 서버 터지는 경우

0

88

2

컨텐츠 단, 엔진 단

0

106

1

질문 있습니다

0

78

2

C# 게임서버 3D MMORPG

0

152

2

유니티6 버전

0

100

2

receive하는 부분과 send하는 부분의 차이

0

135

2

커서의 위치의 중요성

0

105

2

C++ 전혀 모르는데 C# 서버

0

170

2

강의에 질문이 있습니다

0

88

2

멀티스레드 이해도 질문

0

96

1

500 vs 500

0

131

3

OnAcceptHandler 액션 함수

0

64

1

이 정도 서버의 객관적인 수준이 궁금합니다.

0

193

2

36. Serialization #3 에서 string (name) 코드 수정 질문

0

83

2

외부 컴퓨터와의 통신 방법이 궁금합니다

0

107

1

스핀락 질문.

0

111

2