C# 我可以从Windows服务中的另一个线程中打开更多线程吗?

C# 我可以从Windows服务中的另一个线程中打开更多线程吗?,c#,multithreading,cpu,C#,Multithreading,Cpu,我可以从线程内部打开一些线程吗 我有一个包含两个不同角色的Windows服务。当服务启动时,我打开2个线程:每个角色一个线程。在每个线程中,我需要打开子线程 我可以为每个核心打开多少个线程?请确保您可以从一个线程实例化其他线程-至于有多少线程可能被证明是有用的: 值得记住的是,线程本身是有成本的,添加线程来提高性能只能在一定程度上起作用 没有硬限制。。。只要框架有足够的资源和自由句柄等。 过去,我的一个应用程序在峰值时运行了大约150个线程 在spawn threads中,我们根据需要生成更多线

我可以从线程内部打开一些线程吗

我有一个包含两个不同角色的Windows服务。当服务启动时,我打开2个线程:每个角色一个线程。在每个线程中,我需要打开子线程


我可以为每个核心打开多少个线程?

请确保您可以从一个线程实例化其他线程-至于有多少线程可能被证明是有用的:


值得记住的是,线程本身是有成本的,添加线程来提高性能只能在一定程度上起作用

没有硬限制。。。只要框架有足够的资源和自由句柄等。 过去,我的一个应用程序在峰值时运行了大约150个线程

在spawn threads中,我们根据需要生成更多线程,这些线程用于执行我们需要处理的任务

过了一会儿,我们开始使用ThreadPool,因为它的资源密集度较低,在应用程序启动时有1024个线程分配

记住当操作系统调度程序调度活动线程时的每个线程,以及您是否需要许多热线程。因此,当不执行任何操作时,要么将这些线程置于睡眠状态,要么使用ThreadPool退出当前迭代,将线程释放回池中

对于.NET框架来说,阅读这些内容是值得的

线程和线程

使用线程和线程


话虽如此,但要小心你所创造的。您可能需要担心线程安全、锁定和同步,不管您想怎么说。如果我打开Windows process monitor,我看到进程“Sistem”有175个线程,调试应用程序也会变得有点困难

。通常情况下,作为开发人员,您不必担心硬件架构。所有封装范例都指向这个方向。他或她应该担心可伸缩性和成为一名优秀的开发人员。每个内核可以运行很多线程。我建议你自己尝试一下,看看它是如何运行的(它不会让你的电脑爆炸)。。。(不要从创建10000个线程开始,从50个线程开始)。设计时已知的线程总数是多少?只要数字有界,你就不会有问题。对它进行实验,看看它是如何运行的……很好,您明确地声明在不需要时将线程置于睡眠状态,这样操作系统就可以将它们从就绪队列中移除。也就是说,线程池中的1024个线程非常多。。。而且线程数量有一个硬限制,至少在32位系统上是这样,大约是2k个线程。2k个线程的限制是很多线程。。我确信在你点击2k之前,系统会因为其他原因崩溃:)不,它不会崩溃。阅读我提供的链接。如果减少堆栈空间,甚至可以达到更高的线程数。我知道这是无用的,但为什么系统会崩溃呢?我不是那个意思。。线程的真正编码和使用不仅仅是PoC。。请记住.NET线程是不同的。。它们在CLR中运行……我同意2k(或1k,或200百…)线程是胡说八道。不过,我不明白为什么系统会崩溃。也许是你的应用,但操作系统呢?不可能。。。