【C# Parallel】ParallelOptions
ParallelOptions 构造函数
此构造函数用默认值初始化实例。 MaxDegreeOfParallelism 初始化为-1,表示没有对应采用的并行度进行上限设置。 CancellationToken 初始化为不可取消的标记,并 TaskScheduler 初始化为默认计划程序 (TaskScheduler) 。
所有这些默认值都可以使用实例上的属性集访问器进行覆盖。
属性
MaxDegreeOfParallelism:获取或设置此 ParallelOptions 实例所允许的并发任务的最大数目。
MaxDegreeOfParallelism属性影响通过 Parallel 此实例传递的方法调用所运行的并发操作的数量 ParallelOptions 。 属性值为正会将并发操作数限制为所设置的值。 如果为-1,则对并发运行的操作的数量没有限制。
默认情况下, For 和 ForEach 将使用基础计划程序提供的多个线程,因此, 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的更多相关文章
- 【C# Parallel】开端
使用条件 1.必须熟练掌握锁.死锁.task的知识,他是建立这两个的基础上的.task建立在线程和线程池上的. 2.并不是所有代码都适合并行化. 例如,如果某个循环在每次迭代时只执行少量工作,或它在很 ...
- 【C# Parallel】ParallelLoopState
总结 总之,要编写一个健壮的并行循环,必须在并行循环体中检测 ParallelLoopState 对象的 IsExceptional, IsStopped 和 LowestBreakIteration ...
- 【Parallel】.Net 并行执行程序的使用心得
一.摘要 官方介绍:提供对并行循环和区域的支持. 命名空间:using System.Threading.Tasks 三个静态方法:Parallel.Invoke,Parallel.For,Paral ...
- 【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行速度的比较
[知识点整理]Oracle中NOLOGGING.APPEND.ARCHIVE和PARALLEL下,REDO.UNDO和执行速度的比较 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 ...
- 【.NET 6】多线程的几种打开方式和代码演示
前言: 多线程无处不在,平常的开发过程中,应该算是最常用的基础技术之一了.以下通过Thread.ThreadPool.再到Task.Parallel.线程锁.线程取消等方面,一步步进行演示多线程的一些 ...
- 【静默安装】configToolAllCommands响应文件问题
[静默安装]configToolAllCommands响应文件问题 客户在静默安装RAC 12.1.0.2的时候有如下的输出: Successfully Setup Software. As inst ...
- 【Unity Shaders】学习笔记——渲染管线
[Unity Shaders]学习笔记——Shader和渲染管线 转载请注明出处:http://www.cnblogs.com/-867259206/p/5595924.html 写作本系列文章时使用 ...
- 【exp/imp】将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中
[exp/imp]将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后 ...
- 【新特性】JDK1.8
一.简介 毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本.这个版本包含语言.编译器.库.工具和JVM等方面的十多个新特性.在本文中我们将学习这些新特性,并用实际的 ...
随机推荐
- HashSet 实现类
HashSet 实现类 通过 HashCode 判断元素是否存在,若存在则不添加,否则添加以此实现唯一性 常用方法 Modifier and Type Method and Description b ...
- JavaScript基本数据类型和引用数据类型详解
数据类型小知识 JavaScript主要数据类型共有7种,有string.number.boolean.undefined.null.symbol.object.其余7种可以笼统的分为两大类:基本数据 ...
- 使用 MVVM Toolkit Source Generators
关于 MVVM Toolkit 最近 .NET Community Toolkit 发布了 8.0.0 preview1,它包含了从 Windows Community Toolkit 迁移过来的以下 ...
- CentOS 7下iptables配置添加修改规则端口方法(转)
简介: Linux CentOS 7默认没有安装iptables,默认的防火墙是firewalld,云吞铺子分享CentOS 7系统下iptables安装.iptables规则配置(放行或者禁用端口) ...
- JAVA多线程学习六-守护线程
java中的守护程序线程是一个服务提供程序线程,它为用户线程提供服务. 它的生命依赖于用户线程,即当所有用户线程都死掉时,JVM会自动终止该线程. 有许多java守护程序线程自动运行,例如 gc,fi ...
- bom案例4-模拟滚动条
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- div置顶
转载请注明来源:https://www.cnblogs.com/hookjc/ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit ...
- bootstrap移动 pc 响应轮播
PC端效果 width100% 移动端 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta ...
- linux下打包所有文件,包括隐藏文件到压缩包
命令如下: cd /root/test/ tar czvf test.tar.gz .[!.]* * 解释: tar czvf test.tar.gz * 压缩当前文件夹下非[隐藏文件]的文件 tar ...
- 配置phpmemcache扩展,Loaded Configuration File (none)
首先我来描述问题: 编译安装完php的扩展库memcache后,在php.ini文件中添加了memcache.so的配置文件 extension=/usr/local/php5.6.27/lib/ph ...