강의

멘토링

로드맵

Inflearn brand logo image

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

Impact님의 프로필 이미지
Impact

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)

JobTimer

Job 관련 문의

작성

·

326

0

안녕하세요.

JobTimer 와 JobSerialize 보면서 궁금한점이 있어서 문의 드립니다.

 

구현된 JobTimer 와 JobSerialize 를 보면, 

Push(), Pop() 부분에만 lock 이 잡혀있고,

 

Execute() 부분에는 lock 이 없습니다. 이런경우 Execute 가 여러 쓰레드에서 실행될수있는 경우는 없을까요?

만약 여러쓰레드에서 execute 가 실행된다면, 결과적으로 내부에서 foreach 등을 사용하는경우 문제가 될것같아서 문의 드립니다.

 

예를 들면,  Timer 에서 처리중인 작업이 오래걸리는경우 다음 Timer  Tick 이 돌아왔을때에 아직 이전에 실행중인 Timer 작업이 실행중이고 다음 Timer 작업이 돌아오는경우 문제가 없는지 궁금합니다.

 

답변 1

0

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

잘 이해하셨고 그 부분을 각별히 신경써야 합니다.
1) Execute를 정책상 한 군데서만 호출하거나,
2) 아니면 이미 다른 누군가가 큐를 비우고 있다면 접근하지 않는 형태로 만들어야 합니다.

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

답변감사합니다!

Impact님의 프로필 이미지
Impact

작성한 질문수

질문하기