gpt4 book ai didi

.net - 线程与线程池

转载 作者:行者123 更新时间:2023-12-03 04:29:11 26 4
gpt4 key购买 nike

使用新线程和使用线程池中的线程有什么区别?有哪些性能优势?为什么我应该考虑使用池中的线程而不是我显式创建的线程?我在这里特别考虑的是 .NET,但一般示例就可以了。

最佳答案

线程池将为频繁且相对较短的操作提供好处

  • 重用已创建的线程而不是创建新线程(一个昂贵的过程)
  • 当新工作项的请求激增时,限制线程创建的速率(我相信这仅在 .NET 3.5 中有效)
    • 如果您将 100 个线程池任务排队,它只会使用已创建的线程数来服务这些请求(例如 10 个)。线程池将进行频繁的检查(我相信在 3.5 SP1 中每 500 毫秒一次),如果有排队的任务,它将创建一个新线程。如果您的任务很快,那么新线程的数量将会很小,并且为短任务重用 10 个左右的线程将比预先创建 100 个线程更快。

    • 如果您的工作负载始终有大量线程池请求传入,那么线程池将根据您的工作负载进行调整,通过上述过程在池中创建更多线程,以便有更多的线程可用于处理请求

    • 检查Here有关线程池如何在后台运行的更深入的信息

如果作业运行时间相对较长(可能大约一两秒,但这取决于具体情况),自己创建一个新线程会更合适

@Krzysztof - 线程池线程是后台线程,当主线程结束时将停止。手动创建的线程默认处于前台(主线程结束后将继续运行),但可以在调用 Start 之前将其设置为后台。

关于.net - 线程与线程池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/230003/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com