猿问

C#中如何用多线程加快计算速度?

我有一计算密集型程序段:
for(int i=1; i<=100; i++)
{
DoCalc(i);
}
AAA;
BBB;
......
i从1至100要计算完需要很长时间,然后才能执行后面的AAA,BBB语句。
可否采用多线程方式加快计算速度,代码应该怎样写?
DoCalc(i),计算和顺序无关,只要100个计算都分别处理完即可,而且,不涉及读写共同资源的问题。

炎炎设计
浏览 1187回答 3
3回答

交互式爱情

多线程不是用来加快速度的,而是用做其它用途的。多线程本身不能加快速度,除非你针对多核CPU进行了特殊优化。因为不管怎么分线程,最终你的计算量都是一样的,而多线程的操作中间会带来线程间通信的开销,所以速度不会快只可能降低(除非针对多核CPU进行了特殊优化可以使用所有的核心)。

九州编程

Thread [] tList = new Thread [100] ;for(int i=1; i<=100; i++){// 这里改成多线程。tList [i] = new Thread (new new ParameterizedThreadStart(DoCalc));tList [i].Start (i) ;}// 等待每一个线程结束。for (int i = 1 ; i <= 100 ; i ++){tList [i].Join () ;}AAA;BBB;......
随时随地看视频慕课网APP
我要回答