2011-05-23 58 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