【问题标题】:Is it ok to create thread in thread?在线程中创建线程可以吗?
【发布时间】:2013-04-14 19:32:17
【问题描述】:

所以我有 4 个对象。它们中的每一个必须同时执行多达 5 个操作,并且所有 4 个对象必须同时操作。我为每个对象创建了一个线程并在 5 个新线程中创建了?我看到一段时间后线程不再执行。 问题是:线程中有线程可以吗?还是最好创建一个线程池并发运行?

【问题讨论】:

  • “OK”,当然,你可以做到。问题更多是关于 - 你是否正确管理你的线程和共享数据?
  • 另外——取决于你实际需要做什么——创建线程可能不是最好的方法。您可以查看Task Parallel Library - 这可能有用。
  • 关于共享数据是好的关于线程管理我不确定,因为一段时间后线程没有执行
  • 除此之外,线程不是“在彼此内部”,你在进程中创建一个新线程,所以它们处于同一级别。
  • 您应该在此处发布您的代码。您可能做错了什么其他错误

标签: c# multithreading thread-safety


【解决方案1】:

没有“线程中的线程”之类的东西。线程是整个过程中全局的实体。它是否在其他线程之一中创建并不重要。在它被创建的那一刻,它就变成了全局的并且与它创建它的线程无关。

关于创建线程的更多信息,您应该担心对共享资源的访问和可能的竞争条件,当线程在不同位置创建时可能更难跟踪。

根据您的描述,我建议您查看 Task Parallel Library,它使问题变得轻而易举。

【讨论】:

    【解决方案2】:

    没关系。有时您实际上需要这样做,例如在使用服务器时,您可以从正在侦听客户端的线程为每个连接的客户端创建线程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      相关资源
      最近更新 更多