• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

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

24.01.28 23:41 작성 24.01.28 23:43 수정 조회수 240

0

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

 

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

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

 

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

 

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

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

답변 1

답변을 작성해보세요.

0

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