线程数大小和CPU密集型和I/O密集型

 

一个程序究竟应该设计多少线程数,应该从并发模型来考虑

CPU密集型

CPU密集型就是需要消耗大量CPU运算的服务,这个时候,如果线程数大,会增加CPU的上下文切换,但是线程数不能太少,面对CPU密集型,可以从2*CPU 和 CPU+1两个数据去调试线程数的大小。

 

I/O密集型

I/O密集型就是要频繁进行I/O请求,很多时候就是随机I/O的读写请求,这个时候,增加线程,如果是增加处理I/O请求的线程数,其实并不能解决问题,因为大并发的时候,还是会卡住线程,从而线程池中可用线程全部被耗尽,这会导致连锁反应,就是把新进来的请求因为没有可用的线程导致被迫等待,处理I/O密集型,其实用来提交I/O请求的线程只需要少量就可以,线程存在其实就是为了提交I/O请求和相应I/O请求,从这个本质上讲,线程在I/O请求中做的工作只是在各种I/O设备中提交命令。因为也只需要少量线程就可以,典型的应用就是nodejs和nginx,这两款应用就是少量线程和进程的服务,但是确实高并发处理I/O请求的典范。但是异步I/O需要底层操作系统支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值