【问题标题】:Clone a thread in .Net在 .Net 中克隆一个线程
【发布时间】:2011-05-23 19:28:41
【问题描述】:

是否可以在 .Net 中制作线程的副本?有点像 fork() 但只是一个线程而不是整个过程?

我有一个递归算法,出于测试目的,我不想评估代码可以采用的几个不同的分支。最简单的方法是在代码中的决策点克隆线程,让每个线程在不同的分支中继续。

【问题讨论】:

    标签: .net vb.net multithreading


    【解决方案1】:

    任何递归算法都可以在堆栈对象的帮助下实现为迭代算法(如System.Collections.Stack)。那么你的问题就变成了克隆 Stack 对象(微不足道),而不是克隆线程及其堆栈状态(困难)。

    【讨论】:

    • 是的,但是算法很大并且已经存在。我想这样做只是为了测试目的,所以重写代码是无关紧要的。
    • 即使您设法克隆了托管线程,克隆的线程堆栈也将包含对托管对象(句柄)的引用。该算法极不可能正确同步对这些对象的访问。更重要的是,由于这些句柄,克隆将是浅层克隆,而不是您可能真正想要的深层克隆。
    【解决方案2】:

    我的研究没有找到任何答案,而这里缺乏回应使我得出结论,这是无法完成的。

    所以不,在 .Net 中没有复制/分叉线程的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      • 2017-06-18
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      相关资源
      最近更新 更多