강의

멘토링

로드맵

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

fhan님의 프로필 이미지
fhan

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

JobTimer

distribute 질문 있습니다

작성

·

251

0

void JobTimer::Distribute(uint64 now)

{

// 한 번에 1 쓰레드만 통과

if (_distributing.exchange(true) == true)

return;

Vector<TimerItem> items;

{

WRITE_LOCK;

while (_items.empty() == false)

{

const TimerItem& timerItem = _items.top();

if (now < timerItem.executeTick)

break;

items.push_back(timerItem);

_items.pop();

}

}

for (TimerItem& item : items)

{

if (JobQueueRef owner = item.jobData->owner.lock())

owner->Push(item.jobData->job);

ObjectPool<JobData>::Push(item.jobData);

}

// 끝났으면 풀어준다

_distributing.store(false);

}

push해줄때 pushonly값을 true로 넘겨주어야 하는 것 아닌가요?

퀴즈

66%나 틀려요. 한번 도전해보세요!

MMO 서버 환경에서 동시 접속자 증가에 따른 성능 문제를 해결하기 위해 단순 락킹 대신 잡 큐를 사용하는 주된 이유는 무엇일까요?

데이터베이스 접근 속도를 높이기 위해서입니다.

클라이언트와의 통신을 암호화하기 위해서입니다.

여러 스레드가 공유 자원에 효율적으로 접근하고 병목 현상을 줄이기 위해서입니다.

서버 재부팅 없이 업데이트를 적용하기 위해서입니다.

답변 1

0

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

네 라이브 코딩이 반 정도 섞여 있어서
세세한 부분은 잘 조절을 해주시기 바랍니다.

fhan님의 프로필 이미지
fhan

작성한 질문수

질문하기