单核cpu多线程有必要吗?
问题分析 现代计算机一般都是多核cpu,多线程的可以大大提高效率,但是可能会有疑问,那单核CPU使用多线程是不是没有必要了,假定一种情况, web应用服务器,单核CPU、单线程 ,用户发过来请求,单个线程处理,CPU等待这个线程的处理结果返回,查询数据库,CPU等待查询结果...,只有一个线程的话,每次线程在处理的过程中CPU都有大量的空闲等待时间,那这样来说并行和串行似乎并没有体现并行的优势,因为任务的总量在那里,实际情况肯定不是这样的,即便是单核CPU,一个进程中往往也是有多个线程存在的,每个线程各司其职,CPU来调度各线程。 这里需要区分CPU处理指令和IO读取的不同,CPU的执行速度要远大于IO的过程,因此在大多数情况下多一些复杂的CPU计算都比增加一次IO要快,这一块深入理解要学习计算机原理相关的知识。 现实生活中也是有很多类似的例子,比如厨师做一道菜,买菜和买配料需要去不同的两个商店,如果这个过程只依靠他一个人来做,那耗费的总时间就是买菜再去买调料的总时间,如果有一个帮厨,那么就可以兵分两路,再来汇总结果,时间基本可以减半,厨师和帮厨就是不同的线程。 编程是高度抽象生活的一门艺术。 场景模拟 模拟单线程和多线程的效率差距,这里使用连接数据库,和读取磁盘文件来模拟IO操作,期望结果: 单线程总耗时:数据库连接耗时 + 磁盘文件读取耗时 多线程总耗时