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

tkddlsdndb님의 프로필 이미지
tkddlsdndb

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part9: MMO 컨텐츠 구현 (DB연동 + 대형 구조 + 라이브 준비)

DB 연동

RecvArgs_Completed에서 lock을 안하는 이유

작성

·

423

0

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

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

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

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

답변 1

1

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

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

tkddlsdndb님의 프로필 이미지
tkddlsdndb

작성한 질문수

질문하기