2014-03-26 3 views
2

포크/조인을 사용하여 재귀 적으로 문제의 해결책을 찾으십시오.포크/가입 형제 자매/지점

 /——----1------\ 
    /--1.1--\  /--1.2--\ 
1.1.1 1.1.2 1.2.1 1.2.2 

이제 해결책을 1.2.1에서 찾을 수 있습니다. forkjoin 풀의 다른 모든 프로세스를 취소 할 수있는 방법이 있습니까?

각 1.1 및 1.2에 각각 잠재적 솔루션이 포함되어 있음을 알면 어떻게됩니까? 형제 (및 이들이 스폰 한 하위 포크) 만 취소하고 싶습니다.

일부 공유 객체 플래그를 사용할 수는 있지만, Fork/Join이 지점이나 형제를 없애기위한 더 깨끗한 방법을 원했습니다.

답변

1

아니요 일단 시작되면 완료 또는 오류/예외로갑니다.

직접 취소를 프로그래밍해야합니다. 즉, boolean을 true (취소)로 설정할 준비가되면 휘발성 부울을 각 Task에 전달합니다. 각 작업은 부울 값을 true로 테스트하고 즉시 중지 할 수 있습니다.