线程对运算密集型任务是如何提速的?比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。不明白。请大神指导

解决方案 »

  1.   

    你的结果一定是有前提的理想情况,一是你有10个可以并发运算的核心,二是你的任务可以分解成彼此独立的10个任务。
    但通常实际不完全如此。
    如果你只有4个核心完全并发运算,那么其余的线程也只能排队,或者所有线程分享4个运算核心,导致每个线程运算时间超出10毫秒。最终还是要看cpu的真正并发核心的数量。
    如果你10个任务不能彼此独立,需要互相等待,那么也达不到10毫秒的目标。
    还有,线程的调度也需要一点儿时间。
      

  2.   

    因为CPU运算很快,但计算机其他组件速度跟不上,所以CPU同时干多件事情才不会浪费
    如果你的计算任务很少涉及到其他,主要是CPU计算的话,线程数超过CPU核心数也不会提升多大性能,甚至会降低性能
      

  3.   

    主要利用多个CPU,这样把运算量拆分成并行的任务,让不同的CPU执行不同的计算等,最后再汇总结果
      

  4.   

    @oyljerry:你好,恩恩。这块,我有个疑问,利用多个CPU,这样把运算量拆分成并行的任务,
       CPU是如何清楚该怎样拆分的呢?、??
      

  5.   


    你好,恩恩。这块,我有个疑问,利用多个CPU,这样把运算量拆分成并行的任务,
       CPU是如何清楚该怎样拆分的呢?、??
      

  6.   

    你好,恩恩。这块,我有个疑问,利用多个CPU,这样把运算量拆分成并行的任务,
       CPU是如何清楚该怎样拆分的呢?、??CPU自身是不能帮你拆分任务的,CPU只能执行任务,拆分任务要靠你自己安排进不同的线程里。