我一直在玩弄线程,试图将一些限制推向极致——为了我自己的娱乐。我知道线程池默认为 25 个线程,并且可以增加到 1000 个(根据 MSDN)。但是,每个 CPU 核心的线程数的实际限制是什么呢?在某些时候,上下文切换会比线程保存造成更多的瓶颈。有人有任何涉及此的最佳实践吗?我们是在谈论 100、200、500 吗?这取决于线程正在做什么吗?除了框架规定的架构之外,是什么决定了每个 CPU 核心有多少个线程以最佳方式运行?
当然,这完全取决于线程正在做什么。如果它们受 CPU 限制(例如处于无限循环中),那么每个核心一个线程就足以使 CPU 饱和;超过这个数量(并且您已经拥有更多,来自后台进程等),您将开始争用。
在另一个极端,如果线程不符合运行条件(例如,在某些同步对象上被阻止),那么线程数量的限制将由 CPU 以外的因素决定(堆栈内存、操作系统内部限制、 ETC)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)