Parallel.ForEach 之 MaxDegreeOfParallelism

摘要:
参考:并行度最大并行度配置结论:这与线程集的数量有关。设置并行性测试如下:@@@codeSystem。线程。线程池。设置最小线程(20,20);System.Threading.ThreadPool.SetMinThreads(50,50);varlist=GetIPByMask(IPAddress.Parse(“
参考:Max Degree of Parallelism最大并行度配置

结论:

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

测试如下:

Parallel.ForEach 之 MaxDegreeOfParallelism第1张

@@@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个

Parallel.ForEach 之 MaxDegreeOfParallelism第2张

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

Parallel.ForEach 之 MaxDegreeOfParallelism第3张

  1. 增加线程数,

不限制并行数

Parallel.ForEach 之 MaxDegreeOfParallelism第4张

并行设为2

Parallel.ForEach 之 MaxDegreeOfParallelism第5张

并行设为6

Parallel.ForEach 之 MaxDegreeOfParallelism第6张

 

 

 

 

免责声明:文章转载自《Parallel.ForEach 之 MaxDegreeOfParallelism》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【Unity3D与23种设计模式】桥接模式(Bridge)【Apache】在Apache中利用ServerAlias设置虚拟主机接收多个域名和设置域名泛解析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

《C#并发编程经典实例》笔记

1.前言 2.开宗明义 3.开发原则和要点 (1)并发编程概述 (2)异步编程基础 (3)并行开发的基础 (4)测试技巧 (5)集合 (6)函数式OOP (7)同步 1.前言 最近趁着项目的一段平稳期研读了不少书籍,其中《C#并发编程经典实例》给我的印象还是比较深刻的。当然,这可能是由于近段日子看的书大多嘴炮大于实际,如《Head First设计...

Ansible 系列之 Inventory 资源清单介绍

一、Inventory 库存清单文件 1.Inventory 作用 Ansible 可以在同一时间针对多个系统设施进行管理工作。它通过选择Ansible 资源清单文件中列出的系统,该清单文件默认是在/etc/ansible/hosts,也可以使用 -i <path> 进行路径的指定。文件内的格式INI 风格,中括号内为分组名。 除了这个文件之...

c# async await 理解 结合并行处理

写两个方法 第一个 List<int> list = new List<int>(); int i= 0; do { i++; list.Add(i); } while (i< 10); Console.WriteLine("开始执行时间:" + DateTime.Now.ToString()); Parall...

C#异步编程的实现方式——ThreadPool线程池

在需要创建的线程很多,且都是比较小的线程的情况下,可以使用线程池(ThreadPool类)。ThreadPool是一个静态方法,提供了对一个线程集合的操作,它会在线程数不足时增加线程,空闲线程数过多时释放资源。 1、ThreadPool简单应用 调用ThreadPool.QueueUserWorkItem()方法,传递一个WaitCallBack委托类型的...

Jmeter性能测试-jp@gc

本文参考了:https://www.cnblogs.com/yagao/p/12614175.html   Throughput Shaping Timer 是用来控制吞吐量的定时器,通过延缓线程运行来整体控制取样器产生的RPS。 实际使用中: 1. 可以通过设置在不同吞吐量分别持续一段时间,考察系统在不同吞吐量情况下的稳定性 2. 可以通过设置随着时间持...

iOS开发之多线程

1、多线程概念 进程 正在进行中的程序被称为进程,负责程序运行的内存分配。每一个进程都有自己独立的虚拟内存空间。  线程 线程是进程中一个独立的执行路径(控制单元) 一个进程中至少包含一条线程,即主线程 可以将耗时的执行路径(如:网络请求)放在其他线程中执行 创建线程的目的就是为了开启一条新的执行路径,运行指定的代码,与主线程中的代码实现同时运行。 栈区:...