★★★送分快来抢★★★:多线程程序在多cpu服务器里性能没有明显提升,为何?

解决方案 »

  1.   

    我做了windows service,每50秒看有没有工作任务,有的话就开启一个线程运行任务,有可能同一时间有多个任务。感觉和单cpu差不多,多cpu的优势完全没发挥出来,
      

  2.   

    有可能同一时间有多个任务
    ------------------------
     你别有可能啊,作个测试,指定开启多少个线程,记录完成时间,再在单cpu上做同样动作,这样才能知道有多大差别!
      

  3.   

    to GXY2005(晓晨美眉好^_^) :做过测试,性能差不多,有时单cpu比多cpu快。
      

  4.   

    多CPU编程不仅仅是多开几个线程那么简单
      

  5.   

    to lizhizhe2000(彬彬):多CPU编程如何提高性能?
      

  6.   

    thank you ,能否具体点,很急,在线等
      

  7.   

    to liujia_0421() :有这样的工具吗?
      

  8.   

    理论上多个线程应该分配给多个cpu干活,多个人干活比一个人干活快才对
      

  9.   

    怎么知道线程在哪个cpu里运行?
      

  10.   

    <TR>
    <TD style="HEIGHT: 27px" colSpan="4"><FONT face="宋体"></FONT></TD>
    </TR>
    <TR>
    <TD style="HEIGHT: 68px" colSpan="4">
    <asp:Label id="Label1" runat="server" Font-Size="X-Small" Height="46px" Width="792px"></asp:Label></TD>
    </TR>
      

  11.   

    多CPU系统在小方法里体现不出来性能的. 因为要有片切换, 所以在很小的方法里还有可能下降性能
      

  12.   

    多cpu在这么小的执行要求上  是根本体现不出高效的
      

  13.   

    我觉得也是,多CPU的体现应该是在大容量,大吞吐,情况复杂的情况下可能表现相对单C要好
      

  14.   

    是的,用多CPU处理单任务有点浪费,操作系统在这个任务上的优化有时候会入不敷出。建议使用“完成端口”,性能会有不小的提升哦~~~
      

  15.   

    幫頂..覺得還是要在多任務多進程多數據的情況下才能體現的出來.單純的單任務可能看不出來有多少的優勢吧.
    ------------------------------------------------------------------------------------
                          空間域名出售.上海京拓.www.kingtoo.com   
      

  16.   

    我做了windows service,每50秒看有没有工作任务,有的话就开启一个线程运行任务,有可能同一时间有多个任务。感觉和单cpu差不多,多cpu的优势完全没发挥出来,-------------------------------------------------------------
    1,你的程序是否在单CPU系统里100%的CPU占用率?
    2,50秒应该是太大了,你应该使用消息机制,让你的程序在有任务没完成的时候立即生成线程来做任务
    3,生成线程是有开销的,如果你的线程起来做的任务很简单,那你应该不应该用多线程
    4,你是否把最需要计算的部分分成了多线程?如果把非计算热点做成多线程,热点仍然是单线程,那么仍然不会有多大的性能提升.
      

  17.   

    thank you 
    to closetome:我在每个单任务里开多线程,分别执行多个明细任务,建议使用“完成端口”,是啥意思?
      

  18.   

    to lanphaday:在单CPU系统里没有100%的CPU占用率,我怀疑是线程堵塞,因为每个线程都要执行多个命令,执行多个命令很熬时,同时并发执行命令响应很慢
      

  19.   

    我认为:是的。 我们拿windows来说把,它是多线程单进程模型,也就是说抢占cpu的是线程,所以如果多cpu的话,可以同时处理多个线程的请求,如果这些线程都是异步的话,就相当与并发处理,最差情况也是同步,和单个差不多
      

  20.   

    unix是单进程模型,没怎么研究过
      

  21.   

    你想呀,要不然为什么双核的cpu效率高也是这个原因。以前hyperthread(我买的)cpu的时候,真正的物理处理器就一个,无非就是提高了准备计算的前期步骤;而双核是2个物理的,就真正像同时2个人做事情