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

mhyim님의 프로필 이미지

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

JobQueue #2

잡큐1, 2를 들으며 질문이 있습니다. (Push 큐로직 + Send()의 시간복잡도 관련)

작성

·

360

·

수정됨

0

루키스님 안녕하세요?

잡큐 1, 2를 들으며 본 서버 강의 앞부분과 비슷한 내용같은데 차이를 몰라 질문 올리게 되었습니다.

 

아래 질문들의 제 본질적인 질문

옛날에 만든거 아닌가? 왜 새로 만드지? 뭐가 다른거지?

입니다

 

  1. JobQueue #1 강의 중

PacketHandler.cs 수정 중에

스레드가 일을 Push할 때 처리 가능한 상황이면 해당 스레드가 처리, 그렇지 않으면 Queue에 Push만 하고 종료, 서버코어의 Session.cs의 Send()가 이미 비슷하게 구현됨

이라고 설명해주셨는데, 말씀 그대로 이미 비슷하게 큐로 구현이 되어있어 뭐가 다른거지 생각해보다가

아래 그림 플로우 처럼 제가 이해한게 맞는지 궁금합니다.

 

  1. JobQueue #2 강의 중

     

Broadcast() 로직의 O(N^2)을 O(N)으로 줄이기 위해 패킷 모아보내기 스킬을 소개해 주셨습니다.

그런데 강의 앞부분 'SendBuffer'에서 버퍼를 다룰 때

RecvBuffer와는 다르게 SendBuffer는 외부에 구현함으로써 O(N^2)을 O(N)으로 줄일 수 있다.

라고 이미 말씀해주셨는데요, O(N^2)을 O(N)으로 줄이는 둘의 차이점이 궁금합니다.

둘은 완전히 다른 얘기일까요? 만약 그렇다면, 둘 다 그대로 방치했다면 O(N^3) O(2N^2, 표현이 맞진 않지만 느낌상)이 되는 로직이 되는건가요?

 

답변 미리 감사합니다.

수강자 올림

답변 2

0

안녕하세요, 인프런 AI 인턴입니다.

질문하신 내용과 관련하여 비슷한 내용을 다룬 기존 질문과 답변을 찾았습니다.

  1. JobQueue와 관련된 강의 내용에서 스레드가 일을 처리할 수 있는 상황인지와 Queue에 Push하는 로직에 대한 설명이 필요하시다면, 아래 링크를 참고하시면 도움이 될 것 같습니다.
  • JobQueue 흐름에 관하여 질문있습니다
    • 이 링크에서는 JobQueue의 작동 원리와 Flush 메소드, 쓰레드가 작업을 어떻게 처리하는지에 대한 질문에 강사님이 답변해주신 내용이 있습니다.
  1. 또한, O(N^2) 문제를 해결하기 위한 패킷 모아보내기 방식에 대한 이해가 필요하신 경우, 아래 링크에서 관련 내용을 확인하실 수 있습니다.
  • Job System 돌아가는 방식에 대해 궁금합니다
    • 이 링크에서는 유니티의 Job System 개념을 서버에 적용하는 방식과 관련하여 강사님의 설명이 포함되어 있습니다. 이는 O(N^2) 문제와 직접적으로 관련된 내용은 아니지만, JobQueue와 관련된 광범위한 질문에 대한 답변이므로 참고하시면 좋을 것 같습니다.

설명된 내용들을 통해 궁금하신 점에 대한 이해를 돕고, 추가적인 질문이 있으시다면 해당 링크의 댓글로 질문을 남기실 수도 있습니다.

mhyim님의 프로필 이미지

작성한 질문수

질문하기