• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

SendForEach에 대한 질문 사항

22.02.09 00:00 작성 조회수 165

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
 

안녕하세요 강의 내용 중에 궁금한 점이 있어서, 문의드립니다.

1. SendForEach 호출시에 모든세션에 send를 진행하게되는데 이 send를 호출한 순서대로 처리하지 않는 부분이 궁금한데요,

 

서버에 각 세션 마다 비동기로 recv진행하게되는데 공용 쓰레드 풀에서 쓰레드 개입해서 알려주기 때문에, 거의 동시에 왔을 경우 순서에 대한 보장이 없는건가요??

Sleep(1)을 이용해서 약간에 딜레이만 줘도 순서대로 전송되는걸 확인했습니다.

 

2. 1번가 비슷한 내용이긴한데요 SendForEach에서 Send 후에 서버에서 브로드캐스팅을 통해 연결되있는 모든 서버로 전송하게 되는데

I am {playerID} 부분을 클라에서 찍어보면 0 0 0 1 1 1 요런식으로 안나오고 막 섞여서 나오고 있는데, 이 부분에 대한 이유가 궁금합니다.

 

 

 

답변 1

답변을 작성해보세요.

0

일단 Send/Recv 쪽은 비동기 함수를 호출하고 있기 때문에
함수를 요청한 순서대로 꼭 처리된다는 보장이 없습니다.
TCP 연결 특성상 내가 데이터를 전송하고 싶어도
상대가 받을 수 없는 상태라면 전송이 지연될 수 있기 때문에
결과적으로 전송이 완전히 끝나는 시점은 우리가 예측할 수 없습니다.