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

사과일광욕님의 프로필 이미지
사과일광욕

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동

복습 #4

RecvBuffer는 락을 안둔다고 하셨는데 이럴경우는 어떡하나여?

작성

·

326

·

수정됨

0

틱 쓰레드를 하나두고 틱쓰레드에선 주기적으로 해야할 작업들을 하며,

 

무거운 작업을 처리해야 할때서버가 자기자신에게 Send 하는 식으로 PostQueuedCompletionStatus() 함수를 통해 Worker Thread로 작업을 넘기는데여

이럴경우는 바로 Send 처럼 각자 세션들이 Recv를 하게 됩니다.

 

이런 구조면 ProcessRecv에서도 멀티쓰레드가 개입을 하기 때문에 락을 걸어야 할텐데 이 부분은 어떻게 생각하시나요?

 

실제 현업에서도 Recv에 락없이 사용하나요?

제 구조가 잘못된 설계라고 보시나요?

답변 1

0

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

작업 처리는 어차피 별도 컨텐츠 쓰레드가 담당하면 그만이니
굳이 IOCP를 사용하는 경우는 못 봤지만
애당초 코드에 정답은 없고 그렇게 해보고 싶으시면 용감하게 고쳐보시면 됩니다.
Recv를 다수의 쓰레드가 한다면 락을 거는 등 추가 처리만 해주시면 됩니다.

사과일광욕님의 프로필 이미지
사과일광욕

작성한 질문수

질문하기