怀柔富阳网站建设,深圳宣传片制作服务,注册域名怎么做网站,关于宠物的网站网页设计举个栗子 比如挖一个隧道#xff0c;有2种开工方法1、只在山的一头挖#xff0c;直至挖到山的另一头#xff0c;从而打通隧道#xff0c;这可以看成是单线程 2、在山的两头挖#xff0c;同时开工#xff0c;最后在山的中间接通#xff0c;从而打通隧道#xff0c;这感觉…举个栗子 比如挖一个隧道有2种开工方法1、只在山的一头挖直至挖到山的另一头从而打通隧道这可以看成是单线程 2、在山的两头挖同时开工最后在山的中间接通从而打通隧道这感觉肯定比1快了很多好比多线程 但是2成立的前提是必须有两个工人。而我们的计算机中一般来说只有一个CPU也就是说只有一个工人。多线程不过是CPU在不同的时间片之间切换而表现出齐头并进的样子。 既然挖隧道的人只有一个虽然我的施工方案是在山的两头开挖但是由于工作的人只有一个所以只有让这个人在山的两头跑挖一会这头再去挖另一头来回跑是要花费额外时间的好比线程的切换和调度。 那么我们是不是可以说在单CPU的机器中多线程反而降低了效率呢 1. 不能一概而论你的看多线程在你的程序中为啥而生。在单cpu系统比如有io的等待多线程的确能提高效率 2. 如果cpu确实是一个挖山工人且它工作挖2个小时然后必须休息1小时这1小时休息期间如果让它跑到山那头继续挖效率还是很高的。现在的程序时间大多花在读取数据上真正的计算工作花时间还是相对少的因此cpu很大时间表现都很闲就像挖土效率高运土效率低。多线程就是要充分利用它的挖土效率。 3. pc机不光只一个cpucpu和其它硬件设备一起才能完成计算分工协作但可能出现其中某个家伙偷懒或效率低导致大家都等它闲着的其它设备这个时候可以腾出手来干其它活。单cpu在同一时刻只能干一件事情这没有问题问题是它并不是7*24*3600都在干活其它设备也是同样的道理多线程的目的可以最大限度的提高硬件设备的利用率。 4.同一个设备可以同时(并行互不影响)干几件事情但同一个设备在同一时刻肯定只能干一件事情一般我们说并行或串行都以时间段来看的而不是以时间点来看的比如你一边上je消遣还一边写代码干活在一定的时间范围内你是并行的但如果这个时间范围你划分得非常非常短那么你是串行的。 5.一个cpu可以多线程。但是一个单核的cpu任何时间点都只能在做一个任务。如果只是像楼主说的挖隧道这么简单的挖那么的确多线程没用。只不过很可惜计算机不像拿铁锹挖隧道这么简单。 假设每挖5分钟就需要清理一下挖出来的石土。有一个小车在清理它们。工人只有一个。单线程的做法是 挖5分钟。然后工人停止挖小车清理石土的5分钟里工人在等待。2个线程的做发是 挖5分钟小车来清理石土。这5分钟里工人在另一头挖。 也不是很恰当的比喻。不过至少能说明点问题。小车清理石土就相当于磁盘io等相对于cpu计算来说比较慢的操作。cpu不会等着io的完成而去执行另一个进程的计算任务。这边io完成时好象是会发出什么信号来着忘了。计算机原理都还给老师了惭愧啊。 如楼主所举的例子,我来解惑。如果一个机器人代表CUP哪么这个机器人一天所做的事情并不都是只挖山。它还有许多事情要做比如砍柴烧水钓鱼挖山等等等。如果按以上划分是 4条进程 每一个进程大概占用1/4CUP时间。如果你的设定 在挖山这一快 多设几次同一个任务。 比如设定到 挖山共有3条线程。哪么 挖山的CUP占用率将达到 1/2 这就是所谓的提高了效率。现实中的CPU 在大部分时候的 闲置状态的。因此 开多条线程能提高效率 不如说成是 充分利用了CPU执行时间。 转载于:https://www.cnblogs.com/shann/p/6851889.html