主执行路径(主线程)将被分叉成两个执行路径(不同作业的两个新线程),但不再需要主线程。我可以将其中一个任务分配给主线程并保存一个线程(一个任务由主线程执行,另一个任务由新线程执行)但我想知道将主线程置于无限睡眠Thread.Sleep(Timeout.Infinite)
是否是一种好方法。我的课程将被实例化多次,如果无限睡眠中的线程从操作系统获取资源,这对我来说是个坏消息。
问问题
3688 次
2 回答
1
您创建的每个线程都会占用堆栈空间。在 Windows 上,默认情况下为 1MB。操作系统还使用其他内部管理数据结构来跟踪线程,这些线程也会占用一些内存,但 1MB 堆栈肯定会成为最大的资源消耗者。
话虽如此,如果我们只谈论 2 对 3 线程,那么差异就很小了。如果是 200 对 300,那么您可能需要担心一些事情。但是,如果要生成大量线程,最好使用某种线程池(例如,.NET 框架的内置线程池),而不是生成单独的线程。
于 2010-10-05T04:55:40.773 回答
0
所有线程都会占用资源,无论它们是否处于睡眠状态。
于 2010-10-05T04:47:31.860 回答