강의

멘토링

커뮤니티

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

서태준님의 프로필 이미지
서태준

작성한 질문수

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

JobTimer

Environment.Tickcount 오버플로우 질문이에요

작성

·

625

0

public void Push(Action action, int tickAfter = 0)

{

JobTimerElem job;

job.execTick = System.Environment.TickCount + tickAfter;

job.action = action;

lock (_lock)

{

_pq.Push(job);

}

}

 

public void Flush()

{

while (true)

{

int now = System.Environment.TickCount;

JobTimerElem job;

lock (_lock)

{

if (_pq.Count == 0)

break;

job = _pq.Peek();

if (job.execTick > now)

break;

_pq.Pop();

}

job.action.Invoke();

}

}

만약 현재 TickCount가 int.maxvalue에 근사한 값이라면 job.execTick이 오버플로우가 일어나 현재 시간보다 무조건 낮기 때문에 바로 실행되는 문제가 있을 것 같습니다. 제 생각이 맞을까요?

답변 1

1

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

https://learn.microsoft.com/ko-kr/dotnet/api/system.environment.tickcount64?view=net-6.0

1~2주 이상 서버 내리지 않고 운영할 계획 등이라면 TickCount64를 사용하세요

서태준님의 프로필 이미지
서태준

작성한 질문수

질문하기