.net - 为什么创建一个新线程很昂贵?

标签 .net multithreading clr threadpool

我阅读了很多 .Net 资源,告诉我我应该使用线程池线程而不是自己实例化一个新线程。他们说你应该这样做,因为实例化一个新线程是一项昂贵的操作。在线程创建期间会发生什么使其成为一项昂贵的操作?

最佳答案

一切都是相对的。创建一个新线程是昂贵的......相对于不创建一个。如果您没有为每个线程做很多工作,那么构建和拆除线程所涉及的工作可能会占 CPU 时间的可测量部分。但是相对于创建新进程来说,它是便宜的,尤其是在 Windows 上。

使用线程池通常也更好,因为它经过调整可以帮助您避免同时激活过多线程。您很少希望一次有多个线程处于事件状态,否则您将花费​​大量 CPU 时间在所有线程之间执行上下文切换。使用线程池会为您管理这一点,因为额外的请求会排队等待,直到工作线程准备就绪。

关于.net - 为什么创建一个新线程很昂贵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5626803/

相关文章:

c# - x86 CPU 执行哪些类型的重新排序优化?

c# - 在 c# 中,当从函数返回字符串时,内存是否被释放?

c# - 在 C# 中发现串行端口

c++ - 如何使用线程每 0.3 秒发送一次消息?

java - 如何让一个客户端线程 hibernate ,以便另一个客户端执行?

C++11 cmake O3选项< 'std::thread'初始化没有匹配的构造函数>

c# - 为什么 Property 执行比 Field 或 Method 执行慢?

c# - .Net 中的 key 锁

java - 从 Java 客户端到 .NET 服务器建立 SSL 连接时出错

c# - Sqlite数据库中的加密和解密?