2011-05-23 59 views
1

是否可以在.Net中創建一個線程的副本?有點像一個fork(),但只是一個線程而不是整個過程?在.Net中克隆一個線程

我有一個遞歸算法,並用於測試目的我wan't評估該代碼可以採取幾種不同的分支。最簡單的方法是在代碼中的決策點克隆線程,並讓每個線程繼續在不同的分支中。

回答

1

我的研究不轉了任何答案,這裏缺乏反應使我認爲它不能做的結論。

所以不,沒有方法複製/分叉.Net中的線程。

1

任何遞歸算法可被實現爲一種迭代算法用棧對象(如在System.Collections.Stack)的幫助。然後你的問題變成了克隆Stack對象的一個​​問題(不重要),而不是克隆線程和它的堆棧狀態(困難)。

+1

是的,但算法很大並且已經存在。我只是爲了測試目的而這樣做,所以它不適合重寫代碼。 – Kratz 2011-05-23 20:05:59

+0

即使您設法克隆託管線程,克隆的線程堆棧也將包含對託管對象(句柄)的引用。該算法很可能會正確同步對這些對象的訪問。更重要的是,由於這些句柄,克隆將是一個淺層克隆,而不是你可能真正想要的深層克隆。 – 2011-05-23 20:10:52