关键是怕把服务器搞死,底层机制不了解,求最佳实践。
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(); }); } }
你这是要干什么??
有N条数据,每一条对应M个操作。
@小AI:
静态的Parallel.ForEach内部可能会实现数据并行处理.你这样操作的话,线程也太多了吧
http://msdn.microsoft.com/zh-cn/library/dd460720(v=vs.110).aspx
@平常心队长:
恩。打算取消内部的线程了。