我是靠谱客的博主 冷傲巨人,最近开发中收集的这篇文章主要介绍单核cpu与多线程体会,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.多线程在单核和多核CPU上的执行效率问题的讨论
     多线程在单cpu中其实也是顺序执行的,不过系统可以帮你切换那个执行而已,其实并没有快(反而慢,涉及到切换线程的消耗)
   多个cpu的话就可以在两个cpu中同时执行两个线程..............

 

但为什么有时候线程数超过CPU内核数会更快呢?原因是这种程序的单个线程运算量不足以占满CPU一个内核(比如存在大量IO操作,IO比较慢,是程序瓶颈)。

多线程的用处在于,做某个耗时的操作时,需要等待返回结果,这时用多线程可以提高程序并发程度。如果一个不需要任何等待并且顺序执行能够完成的任务,用多线程简直是浪费。

线程必然不是越多越好,线程切换也是要开销的,当你增加一个线程的时候,增加的额外开销要小于该线程能够消除的阻塞时间,这才叫物有所值。

 

什么时候该使用多线程呢?这要分四种情况讨论:

a.多核CPU——计算密集型任务。此时要尽量使用多线程,可以提高任务执行效率,例如加密解密,数据压缩解压缩(视频、音频、普通数据),否则只能使一个核心满载,而其他核心闲置。

b.单核CPU——计算密集型任务。此时的任务已经把CPU资源100%消耗了,就没必要也不可能使用多线程来提高计算效率了;相反,如果要做人机交互,最好还是要用多线程,避免用户没法对计算机进行操作。

c.单核CPU——IO密集型任务,使用多线程还是为了人机交互方便,

d.多核CPU——IO密集型任务,这就更不用说了,跟单核时候原因一样。

所以我想到了自己学爬虫的时候,写了一个多线程来爬取,其实我觉得它从网络上爬取资源与单线程的区别不是很大,主要是在I/0的时候,cpu处于空闲状态,此时就可以交给其他线程来使用。(这里是指单核cpu)

 

 

最后

以上就是冷傲巨人为你收集整理的单核cpu与多线程体会的全部内容,希望文章能够帮你解决单核cpu与多线程体会所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部