2014-03-26 38 views
2

我正在使用Fork/Join遞歸搜索問題的解決方案。叉/加入殺兄弟/分支

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

現在讓我們說我在1.2.1中找到解決方案。有沒有辦法取消forkjoin池中的所有其他進程?

Whatabout如果我知道1.1和1.2每個都包含潛在的解決方案 - 所以我只想取消我的兄弟姐妹(以及它們可能產生的任何子叉)?

我可以使用一些共享對象標誌,但我希望Fork/Join有一個更清晰的方法來殺死分支或兄弟姐妹。

回答

1

不可以。一旦開始,它將轉至完成或錯誤/異常。

你將不得不自己編程取消。也就是說,準備好布爾值爲true(取消)時,將揮發性布爾值傳遞給每個任務。每個任務都可以測試布爾值爲true,並立即停止。