ParallelOptions 构造函数

此构造函数用默认值初始化实例。 MaxDegreeOfParallelism 初始化为-1,表示没有对应采用的并行度进行上限设置。 CancellationToken 初始化为不可取消的标记,并 TaskScheduler 初始化为默认计划程序 (TaskScheduler) 。

所有这些默认值都可以使用实例上的属性集访问器进行覆盖。

属性

MaxDegreeOfParallelism:获取或设置此 ParallelOptions 实例所允许的并发任务的最大数目。

MaxDegreeOfParallelism属性影响通过 Parallel 此实例传递的方法调用所运行的并发操作的数量 ParallelOptions 。 属性值为正会将并发操作数限制为所设置的值。 如果为-1,则对并发运行的操作的数量没有限制。

默认情况下, ForForEach 将使用基础计划程序提供的多个线程,因此, MaxDegreeOfParallelism 从默认值更改仅限制将使用的并发任务数。

通常情况下,不需要修改此设置。 但是,你可以选择在高级使用方案中显式设置此项,例如:

  • 当你知道所使用的特定算法不能扩展到超出一定数量的内核时。 可以设置属性,以避免在额外的内核上浪费循环。

  • 同时运行多个算法,并希望手动定义每个算法可以利用的系统量。 可以 MaxDegreeOfParallelism 为每个设置一个值。

  • 当线程池的试探法无法确定要使用的正确线程数时,可能最终会注入太多线程。 例如,在长时间运行的循环正文迭代中,线程池可能无法判断合理进度或 livelock 或死锁之间的差异,并且可能无法回收添加的线程以提高性能。 在这种情况下,可以设置属性以确保使用的线程数不超过合理。

案例

//paralle
TaskScheduler taskScheduler = TaskScheduler.Default;
CancellationTokenSource cts=new CancellationTokenSource();
ParallelOptions paraOP = new() { MaxDegreeOfParallelism = 2};
paraOP.TaskScheduler = taskScheduler;
paraOP.CancellationToken = cts.Token;
Parallel.For(1,10,paraOP,i =>{ Console.WriteLine(i+ "ThreadId" + Environment.CurrentManagedThreadId); });

【C# Parallel】ParallelOptions的更多相关文章

  1. 【C# Parallel】开端

    使用条件 1.必须熟练掌握锁.死锁.task的知识,他是建立这两个的基础上的.task建立在线程和线程池上的. 2.并不是所有代码都适合并行化. 例如,如果某个循环在每次迭代时只执行少量工作,或它在很 ...

  2. 【C# Parallel】ParallelLoopState

    总结 总之,要编写一个健壮的并行循环,必须在并行循环体中检测 ParallelLoopState 对象的 IsExceptional, IsStopped 和 LowestBreakIteration ...

  3. 【Parallel】.Net 并行执行程序的使用心得

    一.摘要 官方介绍:提供对并行循环和区域的支持. 命名空间:using System.Threading.Tasks 三个静态方法:Parallel.Invoke,Parallel.For,Paral ...

  4. 【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行速度的比较

    [知识点整理]Oracle中NOLOGGING.APPEND.ARCHIVE和PARALLEL下,REDO.UNDO和执行速度的比较 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 ...

  5. 【.NET 6】多线程的几种打开方式和代码演示

    前言: 多线程无处不在,平常的开发过程中,应该算是最常用的基础技术之一了.以下通过Thread.ThreadPool.再到Task.Parallel.线程锁.线程取消等方面,一步步进行演示多线程的一些 ...

  6. 【静默安装】configToolAllCommands响应文件问题

    [静默安装]configToolAllCommands响应文件问题 客户在静默安装RAC 12.1.0.2的时候有如下的输出: Successfully Setup Software. As inst ...

  7. 【Unity Shaders】学习笔记——渲染管线

    [Unity Shaders]学习笔记——Shader和渲染管线 转载请注明出处:http://www.cnblogs.com/-867259206/p/5595924.html 写作本系列文章时使用 ...

  8. 【exp/imp】将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中

    [exp/imp]将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后 ...

  9. 【新特性】JDK1.8

    一.简介 毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本.这个版本包含语言.编译器.库.工具和JVM等方面的十多个新特性.在本文中我们将学习这些新特性,并用实际的 ...

随机推荐

  1. 实习之bii--关于虚拟机桥接无线网卡

    安装完VMware workstation之后,网络连接里会多出两个虚拟网卡: VMware Network Adapter VMnet1和VMware Network Adapter VMnet8. ...

  2. fiddler-ios13以上信任证书后无法抓取https包

    直接下载fiddler插件原始是不兼容https://telerik-fiddler.s3.amazonaws.com/fiddler/addons/fiddlercertmaker.exe

  3. Qt之图片

    widget.h: #ifndef WIDGET_H #define WIDGET_H #include<QPaintEvent> #include <QWidget> #in ...

  4. [数据结构]伸展树(Splay)

    #0.0 写在前面 Splay(伸展树)是较为重要的一种平衡树,理解起来也依旧很容易,但是细节是真的多QnQ,学一次忘一次,还是得用博客加深一下理解( #1.0 Splay! #1.1 基本构架 Sp ...

  5. 【然天一】随机读写(4k)百盘天梯

    随机读写适用于大量小文件的读写,是最贴近办公和编程的使用场景.现在很多硬盘厂商只宣传它们的连续读写(Seq),但除了游戏和视频剪辑场景之外并没有什么卵用. 总结一下: 傲腾秒杀全部 NAND SLC ...

  6. Windows使用Nginx配置本地文件代理(查看本地资源或图片)

    一.前言 我们在实际开发中会经常遇到把图片上传到服务器上,比如七牛云.阿里云.腾讯云一些提供服务的商家.但是我们的图片隐私也会泄露,所以我们还是上传到本地,使用Nginx来代理到我们本地图片.这样就可 ...

  7. AT2582 [ARC075D] Mirrored

    首先因为这个问题的解的范围我们是不清楚的,可以先考虑一下解的范围以便后面的解题. 那么我们可以大胆猜测这个数的位数应该不会很长,否则除非使用一条与 \(D\) 有关的式子外,不论我们用什么方法都计算不 ...

  8. ansible学习(二)- 清单配置详解

    出处:http://www.zsythink.net/archives/2509 上一篇文章介绍了ansible的基本概念,以及相关的基础配置,我们已经知道,如果想要管理受管主机,则需要将受管主机添加 ...

  9. RPC原理及RPC实例分析(转)

    出处:https://my.oschina.net/hosee/blog/711632 在学校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示.这些程序的特点是服 ...

  10. urlencode编码与urldecode解码

    转载请注明来源:https://www.cnblogs.com/hookjc/ <script type="text/javascript"><!--functi ...