线程数设多少合适(不看后悔,一看必懂)

版权声明:本文为博主原创文章,未经博主允许可以转载。 https://blog.csdn.net/qq_36071795/article/details/83932378

①工作线程数是不是设置的越大越好?
        回答:肯定不是的
        1)一来服务器CPU核数有限,同时并发的线程数是有限的,1核CPU设置10000个工作线程没有意义
        2)线程切换是有开销的,如果线程切换过于频繁,反而会使性能降低

②如果CPU是单核,设置多线程有意义么,能提高并发性能么?
        回答:即使是单核,使用多线程也是有意义的
        1)多线程编码可以让我们的服务/代码更加清晰         
         2)通常来说,Worker线程一般不会一直占用CPU进行计算,此时即使CPU是单核,增加Worker线程也能够提高并发,因为这个线程在休息的时候,其他的线程可以继续工作

 

  一般来说,非CPU密集型的业务(加解密、压缩解压缩、搜索排序等业务是CPU密集型的业务),瓶颈都在后端数据库,本地CPU计算的时间很少,所以设置几十或者几百个工作线程也都是可能的。

 

N核服务器,通过执行业务的单线程分析出本地计算时间为x,等待时间为y,则工作线程数(线程池线程数)设置为 N*(x+y)/x,能让CPU的利用率最大化。

猜你喜欢

转载自blog.csdn.net/qq_36071795/article/details/83932378
今日推荐