现在的下载程序都是多线程的,可以加快下载速度。但是我们用的都是单cpu机子,不明白为什么多线程可以加快下载速度。
比如现在有一个任务是往表里加100w条记录,我感觉用1个线程去执行和用5个线程去执行时间是差不多的。

解决方案 »

  1.   

    多线程不是所有的场合都适合,都能提高效率,如果你的多线程需要去反问同一个资源,而这个资源又属于互斥的共享资源,这时多线程就不能发挥很大作用了,虽然每一个线程都是独立运行,但是在访问互斥资源的时候还是得等待。当然,单CPU的计算机所谓的多线程其实只是一种对CPU资源的分时使用,还算不上真正的多线程。
      

  2.   

    5个笼头放水不一定比1个笼头放水快,如果总水管的流量是一样的,那速度是一样的。而且我们用的是单cpu,不可能实现真正的并行。
    那多线程应该在什么情况下使用呢?
      

  3.   

    多线程在CPU经常闲置的时候能发挥更高的效率。
    如果CPU处理某个任务是长期都是100%,那再分线程出来都没用。
      

  4.   

    楼主这个问题问得好呀!确实, CPU如果已经100%了, 那再分线程也没意义! 不过我们平时的CPU大部分时间都是空闲的...
      

  5.   

    打个比方:一个8车道的路,你用一辆车运东西,这是单线程。如果加7个线程,改成8个车一起运,自然效率更高了。
    这里有一个重要的问题,就是车道(也就是CPU资源)。如果你运东西的卡车很巨大,以辆就占了8个车道,那再分线程加车也提高不了效率了。
      

  6.   

    用网络蚂蚁下载,确实不太耗cpu的资源。但是一个简单的while循环,就会使cpu达到100%。不太清楚网络蚂蚁是怎么实现的。
      

  7.   

    楼主要补一下操作系统的知识
    cpu是分时间片的