강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

CHL님의 프로필 이미지
CHL

작성한 질문수

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

SendBuffer

C# 비동기 소켓 IO는 기본적으로 유저가 생성한 버퍼로 진행되나요?

해결된 질문

작성

·

278

0

SendBuffer공부하면서 궁금한게 생겼는데 C# 비동기 IO 소켓은 기본적으로 IO를 윈도우의 Overlapped IO처럼 유저가 생성한 버퍼에 처리하는 건가요?

즉 Overlapped IO처럼 IO과정에서 커널 버퍼에서 유저 버퍼로 복사하는 과정없이 유저버퍼에 처리하는 건가요?

답변 1

2

Rookiss님의 프로필 이미지
Rookiss
지식공유자

.NET 내부 구현 관련해서는 문서화 된 것이 없어서
그 부분에 대해서는 자세히 알기는 힘들지만,
C#서버도 Windows 환경에서는 IOCP를 기반으로 동작한다고 하니
특별히 다르게 동작할 것 같지는 않습니다.

마지막으로 [커널버퍼에서 유저버퍼로 복사하는 과정없이 유저버퍼에서 처리]는
커널 Send/Recv 버퍼 사이즈를 0으로 설정해서
바로 유저버퍼로 넘기는 방법을 의미하시는 것  같은데
그 부분에 대해서는 논쟁이 많고 오히려 성능이 떨어진다는 분석도 있어서
필수적이라고 보기는 어려운 것 같네요.

CHL님의 프로필 이미지
CHL

작성한 질문수

질문하기