进程中使用的线程越多,执行速度就越快,这种说法对不对


进程中使用的线程越多,执行速度就越快,这种说法对不对

文章插图
不对
完成一个任务可以有多进程和多线程两种方式 , 到底哪种方式快呢?通常人们认为Windows系统是以进程为单位分配CPU时间片的 , 那么使用多个进程就可以多分得一些CPU时间,自然就会比使用单独进程多个线程的方式快一点了 。事实上这种情况并不绝对正确,首先,创建进程比创建线程要多占用系统资源,系统资源不足往往会引起系统性能的下降,导致任务完成的比较慢 。其次,由于多个进程要操作同一个数据集合 , 必然会因为数据争用导致进程状态改变,同多个线程状态改变相比,进程切换要使用更多的CPU时间 。最后,使用单进程方式,由于进程少,每个进程又可以较多的获得CPU时间片,从而能够很大的改善进程的性能 。由此可见 , 并不是使用多进程处理数据就一定比使用多个线程的单进程快 。图(1)显示了使用两种方式的程序性能变化曲线,从图上可以看出,无论使用何种方式 , 进程和线程都不是越多越好,两种方式都存在一个临界点,超过这个临界点,都会因为频繁的进程或线程状态切换而造成程序性能下降 。使用多进程方式在到达临界点之后再增加进程就会引起性能的下降,而且下降速度比单进程多线程方式到达临界点之后的下降速度快,这是因为进程切换比线程切换更费时 。
不是 。
当下载网站限制了线程数,开多了反而会不能下载(可能会被封IP的?。。?例如FTP服务器一般只允许开一个线程下载,我常去的太平洋下载中心只允许最多三个线程 。
下载快完成时下载工具要将各个线程下的部分合并,下载时线程开得越多,后期合并时间越长,特别是一些大文件 。
线程开多了,对磁盘的影响比较大,也占用资源 。
不是 , 因为机器的CPU数、CPU核心数、单核心的线程数都是固定的 。例如你的机器有1个CPU,双核四线程,那么你的机器最多同时跑四个线程 。所以,设置线程数为4,理论上能获得最大效率 。需要额外考虑的是线程之间的切换也是很耗时的,所以不建议设置过多线程数,有可能会适得其反 。
【进程中使用的线程越多,执行速度就越快,这种说法对不对】