• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

Job 관련 문의

22.05.18 11:51 작성 조회수 205

0

안녕하세요.

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

 

구현된 JobTimer 와 JobSerialize 를 보면, 

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

 

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

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

 

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

 

답변 1

답변을 작성해보세요.

0

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

Impact님의 프로필

Impact

질문자

2022.05.18

답변감사합니다!