윈도우 프로그램관련 질문입니다.
하지만 리눅스에서와 큰 차이는 없지 않을까 ... 혹은 공통되는 부분도 있을 것 같기도 합니다.
제가 프로세스풀을 만들었습니다. 워커 프로세스를 N 개 생성해서 임무를 부여하는 프로세스 매니저가 존재하고 그 프로세스 매니저는 작업을 가용한 프로세스에게 할당합니다.
지금 해결해야 하는 과제는 '중지된 프로세스의 재시작' 기능 입니다.
중지된 프로세스는 다시 두 가지로 나뉩니다.
- divide by zero 와같은 예외를 만나서 복구 불가능한 상태로 프로세스가 죽어버린 경우
- 죽지는 않았고 무한루프에 빠져 있거나 데드락 상태이거나 정상적인 처리중이지만 그 처리 시간이 비정상적으로 오래 걸리고 있는 중인 경우
두가지 상태 모두 해당 프로세스를 죽이고(TerminateProcess()) 재시작을 시켜야 합니다.
두번째 경우는 쉽게 해결했습니다. 간단히 타이머로 데드라인이 지난 경우 강제 종료 시켜도록 구현했습니다.
첫번째 경우가 문제입니다.