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

LineBread님의 프로필 이미지
LineBread

작성한 질문수

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

JobQueue #1

JobQueue 사용에 대한 질문

해결된 질문

작성

·

795

1

우선 저는 단순히 Lock 만 사용하면 무수한 경합으로 인해 성능적으로 손해를 볼 수 있어 Job Queue 를 사용하는 것으로 이해를 했습니다.

그래서 이것저것 연습하면서 Job Queue 를 계속 사용하고 있는데 도중에 몇몇 의문이 생기어 질문을 드리게 되었습니다.

 

  • Job Queue 를 사용하다보면 Job Queue 내에 또 다른 Job Queue 를 사용해야하는 상황이 발생하는데 이 부분은 문제가 되지 않을까요?

    아래는 예시 코드입니다.

public void Function()
{
    MatchingManager.Instance.Push(() =>
    {
        ...

        User.Party.Push(() =>
        {
            ...
        });
    });
}

 

  • Lock 처럼 사용하면 된다 라는 생각은 옳은 것인가요? 아니면 Lock 과는 달리 Job Queue 사용 시 주의 할 부분이 있을까요?

 

항상 양질의 강의를 제공해주셔서 감사드립니다.

 

답변 1

2

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

예리한 질문입니다.
실제로 그래서 적당한 정책을 마련해야 하는데,
예전에 일하던 프로젝트에서는
- 이미 JobQueue를 실행중인 경우, GlobalJobQueue에 예약만 하고 실행을 미루고
- 여유되는 쓰레드들이 GlobalJobQueue에서 일감을 꺼내가는
~등의 방식을 이용하곤 합니다.
물론 이런 세부 처리가 부담스럽다면
JobQueue를 연속해서 사용하지 않는 쪽으로 코드를 만들어야 합니다.

LineBread님의 프로필 이미지
LineBread
질문자

Global Job Queue 을 응용 할 생각을 미처 못했었네요..

덕분에 하나 또 배워서 갑니다.

답변 감사합니다!

LineBread님의 프로필 이미지
LineBread

작성한 질문수

질문하기