-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
미해결
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 작업이 돌아오는경우 문제가 없는지 궁금합니다.
답변을 작성해보세요.
0
Rookiss
지식공유자2022.05.18
잘 이해하셨고 그 부분을 각별히 신경써야 합니다.
1) Execute를 정책상 한 군데서만 호출하거나,
2) 아니면 이미 다른 누군가가 큐를 비우고 있다면 접근하지 않는 형태로 만들어야 합니다.
답변 1