Parallel.ForEach 之 MaxDegreeOfParallelism


参考:Max Degree of Parallelism最大并行度配置

结论:

  1. 与设置的线程数有关
  2. 有设置的并行度有关

测试如下:

@@@code

System.Threading.ThreadPool.SetMinThreads(20, 20);

System.Threading.ThreadPool.SetMinThreads(50, 50);

var list = GetIPByMask(IPAddress.Parse("192.168.10.1"), IPAddress.Parse("255.255.255.0"));

System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();

stopwatch.Start();

Parallel.ForEach(list, new ParallelOptions() { MaxDegreeOfParallelism=6}, a =>

{

var status = Ping(a.ToString(), (ip, ex) => Console.WriteLine($"ping {ip},{ex.Message}"), 1000);

Console.WriteLine($"at {DateTime.Now.Second} ping {a.ToString()} {status.ToString()}");

}

);

//foreach (var a in list)

//{

// var status = Ping(a.ToString(), (ip, ex) => Console.WriteLine($"ping {ip},{ex.Message}"), 1000);

// Console.WriteLine($"at {DateTime.Now.Second} ping {a.ToString()} {status.ToString()}");

//}

Console.WriteLine($"平均每秒处理:{(int)Math.Ceiling( list.Count/stopwatch.Elapsed.TotalSeconds)}" );

Console.Read();

@@#

 

  1. 不设置线程数,不限制并行数,每秒约9个

  1. 不使用并行,等到花都谢了

  1. 增加线程数,

不限制并行数

并行设为2

并行设为6

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM