zoukankan      html  css  js  c++  java
  • 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

     

     

     

     

  • 相关阅读:
    mac下crontab定时任务使用
    javascript入门之算术乘法表
    原型模型
    Servlet开发
    工厂模式
    简单工厂模式
    Java设计模式之瞎BB的官话
    JavaBean技术
    软件设计模式之单例模式
    JSP页面请求与响应以及保存页面状态
  • 原文地址:https://www.cnblogs.com/QinQouShui/p/12134232.html
Copyright © 2011-2022 走看看