概述
首先在回答这个问题前要明白几个概念:
①:什么是线程上下文切换
②:什么是CPU时间片
明白这两个概念后,我们再说答案(能/不能)
一,如果是CPU密集型作业------不能
假设一段耗时总共为10s的代码(不涉及io操作),使用单线程执行,只需要10s的时间,当使用多线程执行时,就会涉及到线程的上下文切换,这时耗时肯定会超过10s的,所以这种情况下不能提高效率。
二,如果是IO密集型的作业----能
同理,一段代码(线程使用CPU执行2s的运算,然后执行3秒的io操作,接下来重复这个操作一次)总耗时10s,其中io操作就会占用6s的时间。
使用单线程执行时,串行执行总耗时为10s。
现在使用2个线程执行,当线程一执行2s的CPU运算时,线程二也会获得CPU的时间片进行运算。也就是两个线程会并行执行,当然,因为是单核CPU,所以每个线程2s的运算时间是肯定的,执行完CPU的运算的时间(2*2)是需要4s的,假设线程上下文切换的时间为0.5s,然后每个线程等待io操作的时间是一样的(3s),那么执行完这段代码的所需时间(4s+0.5s+3s)也就是7.5秒。这种情况下多线程肯定是能提高效率的。
当然,IO操作执行的时间越长,使用多线程就越有效。
最后
以上就是唠叨咖啡豆为你收集整理的单核CPU使用多线程能否提高效率?的全部内容,希望文章能够帮你解决单核CPU使用多线程能否提高效率?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复