首页 新闻 搜索 专区 学院

Parallel.ForEach嵌套ForEach或者多个task会怎么样

0
悬赏园豆:50 [已解决问题] 解决于 2015-09-17 19:25

关键是怕把服务器搞死,底层机制不了解,求最佳实践。

 

 class Program
    {
        static void Main(string[] args)
        {
            var data = new List<int> { 1, 2 };
            for (int i = 0; i < 100; i++)
            {
                data.Add(1);
            }
            NewMethod1(data);
            NewMethod(data);
            Console.Read();
        }

        private static void NewMethod1(List<int> data)
        {
            Parallel.ForEach(data, index =>
            {
                Parallel.ForEach(data, item =>
                {
                    Console.WriteLine(item * index);
                });

            });
        }

        private static void NewMethod(List<int> data)
        {
            Parallel.ForEach(data, index =>
            {
                var taskFactory = new TaskFactory(TaskCreationOptions.AttachedToParent, TaskContinuationOptions.ExecuteSynchronously);
                var childTasks = new List<Task>();
                Task parentTask = new Task(() =>
                {
                    foreach (var i in data)
                    {
                        var tmp = i;
                        var childTask = taskFactory.StartNew(() =>
                        {
                            Console.WriteLine(i * index);
                        });
                        childTasks.Add(childTask);
                    }
                });
                parentTask.Start();
                parentTask.Wait();
            });
        }
    }

 

 
小AI的主页 小AI | 菜鸟二级 | 园豆:354
提问于:2014-05-20 16:52
< >
分享
最佳答案
0

没啥影响,只是消耗更多的资源而已。

最佳实践是:http://msdn.microsoft.com/zh-cn/library/dd560853(v=vs.110).aspx

收获园豆:25
Launcher | 高人七级 |园豆:45045 | 2014-05-20 17:28
其他回答(1)
0

你这是要干什么??

收获园豆:25
平常心队长 | 园豆:1113 (小虾三级) | 2014-05-20 17:02

有N条数据,每一条对应M个操作。

支持(0) 反对(0) 小AI | 园豆:354 (菜鸟二级) | 2014-05-20 17:10

@小AI: 

静态的Parallel.ForEach内部可能会实现数据并行处理.你这样操作的话,线程也太多了吧

http://msdn.microsoft.com/zh-cn/library/dd460720(v=vs.110).aspx

支持(0) 反对(0) 平常心队长 | 园豆:1113 (小虾三级) | 2014-05-20 17:16

@平常心队长: 

恩。打算取消内部的线程了。

支持(0) 反对(0) 小AI | 园豆:354 (菜鸟二级) | 2014-05-20 17:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册