Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在线程中创建线程可以吗?_C#_Multithreading_Thread Safety - Fatal编程技术网

C# 在线程中创建线程可以吗?

C# 在线程中创建线程可以吗?,c#,multithreading,thread-safety,C#,Multithreading,Thread Safety,所以我有4个对象。它们中的每一个必须同时执行多达5个操作,并且所有4个对象必须同时操作。我为每个对象创建了一个线程,并在其中创建了5个新线程?我看到一段时间后,线程不再执行。 问题是:线程中有线程可以吗?或者最好创建一个线程池并并发运行它们?没有“线程中的线程”这样的东西。线程是整个过程中全局的实体。它是否在另一个线程中创建并不重要。创建它的那一刻,它就成为全局的,与它创建的线程无关 关于创建线程的更多内容,您应该担心对共享资源的访问和可能的竞争条件,当在不同的位置创建线程时,这些可能更难跟踪

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

没有“线程中的线程”这样的东西。线程是整个过程中全局的实体。它是否在另一个线程中创建并不重要。创建它的那一刻,它就成为全局的,与它创建的线程无关

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


从您的描述中,我建议您看看任务并行库,它使类似这样的问题变得轻而易举。

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

这是“OK”,当然,您可以这样做。问题更多的是——你是否正确地管理了你的线程和共享数据?另外——取决于你实际需要做什么——创建线程可能不是最好的方法。您可以查看任务并行库——这可能很有用。关于共享数据,关于线程管理,我不太确定,因为线程不会在一段时间后执行。从这一点开始,线程不是“彼此内部的”,您可以在进程中创建一个新线程,因此它们处于同一级别。您应该在此处发布代码。很可能你还做错了什么