线程数大小


一般多线程执行的任务类型可以分为CPU 密集型和 I/O 密集型,根据不同的任务类型,我们计算线程数的方法也不一样。
CPU 密集型任务**这种任务消耗的主要是 CPU 资源,可以将线程数设置为N(CPU 核心数)+1,比 CPU 核心数多出来的一个线程是为了防止线程偶发的缺页中断,或者其它原因导致的任务暂停而带来的影响。一旦任务暂停,CPU 就会处于空闲状态,而在这种情况下多出来的一个线程就可以充分利用 CPU 的空闲时间。
当线程数量太小,同一时间大量请求将被阻塞在线程队列中排队等待执行线程,此时 CPU 没有得到充分利用;当线程数量太大,被创建的执行线程同时在争取 CPU 资源,又会导致大量的上下文切换,从而增加线程的执行时间,影响了整体执行效率。
**I/O 密集型任务:
这种任务应用起来,系统会用大部分的时间来处理 I/O 交互,而线程在处理 I/O 的时间段内不会占用 CPU 来处理,这时就可以将 CPU 交出给其它线程使用。因此在*I/O 密集型任务的应用中,我们可以多配置一些线程,具体的计算方法是 2N。\*


文章作者:   future
版权声明:   本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 future !
 上一篇
网络I/O模型优化 网络I/O模型优化
网络 I/O 模型优化1.阻塞式 I/O在整个 socket 通信工作流程中,socket 的默认状态是阻塞的。当发出一个不能立即完成的套接字调用时,其进程将被阻塞,被系统挂起,进入睡眠状态,一直等待相应的操作响应。 2.非阻塞式 I/O我
2020-09-03 future
下一篇 
助力中小企业复产复工-云服务器优惠 助力中小企业复产复工-云服务器优惠
https://i.didiyun.com/2brfgkTahZthttps://i.didiyun.com/2brfgkTahZt
2020-09-03 future
  目录