单核下,多线程搜索文件比单线程真的好吗???一个cpu,一个线程情况下一个个的搜索文件
一个cpu, 多线程情况下来回切换,也是搜索文件,比单线程好像没什么优势,还要拉回切换等代价
是吗???

解决方案 »

  1.   

    当然多线程要好。
    因为CPU常常在空闲,经常等这个等那个,多线程正好可以填饱这个空闲。比如读文件--->内存时,CPU就是空闲的,这时候可以处理已经读进内存的数据。
      

  2.   

    搜索文件,应该用一个线程搜索就好了。Windows自己的文件搜索,就是这么做的。(Linux应该也是这么做的)用多线程,简直就是在开玩笑(也可能是为了想练习写多线程的程序吧)个人看法,仅供参考!
    (任何后果,请自负)
      

  3.   


    这个有道理。
    另外:线程切换开销是肯定存在的,但那个是在你“搜索过程”中,所有调度单元参与切换的开销。所以如果要说,自己的进程多开几个线程,被CPU调度的概率就会大些(在一定范围内,分子分母增加相同值,分值增大)。
      

  4.   

    不要以为单核的cpu就没有并行的单元了,事实上单核的cpu里面还是有很多并行的地方的,可以参考一下学校学的计算机体系结构,但是针对楼主的问题,我不敢说到底是多线程好,还是单线程好,这肯定中间有一个临界点,楼主可以考虑两种解决方案,看一下具体的测试效果如何。。
      

  5.   

    补充一点。
    这个还是说的比较有道理的,内存读写的时候,可能还有其他单独的处理器比如说DMA啊等等,这些东西是不需要CPU的。
      

  6.   

    没必要用递归。一个线程的搜索,可以用非递归先序遍历搜索,也可以用层次遍历(队列的容易些)。Windows应该是用非递归先序遍历搜索(反正不是网上那种用栈的非递归,那种效率太差,可能还不如递归)
      

  7.   

    多线程可以获得更多的CPU时间片
      

  8.   

    不好说,搜索文件费时的并不是CPU,而是磁盘操作,CPU就算有并行能力又怎么样,磁盘操作的有并行能力吗?我觉得就搜索文件这个应用而言,多线程应该不会比单线程快。
      

  9.   

    在单CPU的情况下使用多线程系统开销会更大.最好用单线程. 
      

  10.   

    应该多线程快。
    设计到I/O操作 磁盘读写 等慢操作的时候,CPU会休息下来。
    如果计算 for(int i=0;i!=1000000;++i);这样的纯CPU运算 肯定单线程快