首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

小弟我用多线程写的代码,为什么和单线程速度差不多呢

2014-01-19 
我用多线程写的代码,为什么和单线程速度差不多呢?代码如下:Task[] tasks new Task[end - start + 1]for

我用多线程写的代码,为什么和单线程速度差不多呢?
代码如下:            

Task[] tasks = new Task[end - start + 1];
            for (int i = start; i <= end; i++)
            {
                //tasks[i - start] = Task.Factory.StartNew(() =>
                tasks[i - start] = new Task(() =>
                {
                    if (importCts.IsCancellationRequested)
                    {
                        //close you window
                    }
                    else
                    {
                        download(token, this.tbxDir.Text, end);
                    }
                }, ctstoken);
                tasks[i - start].ContinueWith((a) => { info1(); });
                tasks[i - start].Start();
            }

            Task.WaitAll(tasks);

download(token, this.tbxDir.Text, end)是使用HttpWebRequest下载不同id代码的文件。

我用多线程写的代码,为什么和单线程速度差不多呢?还不如我人工多开下载快呢?

为什么呢?貌似task没起啥作用,还是windows对一个进程下载文件有数量限制?


[解决办法]
其它的不做评论。
但是你使用lamda表达式的时候,就应该了解它的一些负面影响。
其中之一:就是在for循环中,不在能lamda表达式中使用一些变量。
你可以使用IL反汇编生成的代码出来看一下,就懂了。
[解决办法]
PS:跟机器硬件配置,同样有关

热点排行