• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

RecvArgs_Completed에서 lock을 안하는 이유

23.02.02 15:05 작성 조회수 316

0

RecvArgs_Completed에서 lock을 안하는 이유는 하나의 클라이언트당 하나의 thread로 recv를 받기 때문인가요?

그래서 PacketHandler에서 연관된 작업을 모두 처리한 후 (공유 자원을 참조할 땐 job으로만 저장)

다시 RecvArgs_Completed으로 돌아와 RegisterRecv를 호출 하여 threadpool에서 하나의 thread로 recv를 받는게 맞나요?

recv는 하나의 thread로만 작업하는지 궁굼합니다.

답변 1

답변을 작성해보세요.

1

네 하나의 Session에 대한 Recv는 1번만 걸어준 상태이기 때문에 (registerRecv)
멀티쓰레드 환경이라고 하더라도 동일 대상으로는 한 번에 한 번만 수신이 실행됩니다.
굳이 RegisterRecv를 다중으로 걸 이유가 없는게,
코드만 복잡해지고 이전에 받은 데이터가 처리도 되지 않았는데
굳이 다른 쓰레드가 이중으로 뭔가를 처리할 필요가 없습니다.