C#多核心变成 利用多核心优势并行计算

第二章 命令式数据并行

几种并行类型:

数据并行

任务并行

流水线

 

在System.threading.tasks.parallel下

parallel.for

parallel.foreach(可以自定义parytitioner)

parallel.invoke

 

1. Parallel.Invoke

没有特定执行顺序

交错并发:逻辑内核通过时间片机制和快速上下文切换实现并行的假象

并发:不解释

 

热点:潜在的可并行代码

加速比:串行执行时间/并行执行时间

 

2. Parallel.for

每一次迭代一会当作一个任务交给一个线程

迭代范围上界判断是小于,所以需要加一

 

3. Parallel.ForEach

可以通过partitioner分区器进行分区,每一个迭代处理一个分区,Tuple<int,int>

 

退出

ParallelLoopState

Break: 不会马上结束,执行完小于当前迭代的内容

Stop:尽快退出

 

ParallelLoopResult

IsCompleted 循环完成

!IsCompleted && !LowestBreakIteration.HasValue Stop终止

!IsCompleted && LowestBreakIteration.HasValue Break终止

 

AggregateException

.InnerExceptions内部异常集合

 

parallelOptions

maxDegreeoOfParallelism并行度

CancellationToken取消token

taskScheduler任务调度器

 

第三章 命令式并行任务并行

System.Threading.Tasks.Task

一个task代表一个异步操作,并不针对一个线程

 

状态

TaskStatus.Created初始状态

.WaitingForActivation依赖其他任务的任务的初始状态

.WaitingToRun通过TaskFactory.StartNew所创建的任务的初始状态

.Cancelled

.Faulted

.RunToCompletion

 

task.Start()

task.Wait() 等待也都有超时的重载

Task.WaitAll()

 

Task.TaskFactory.StartNew方法可以参数传入cancellationToken,或者TaskCreationOptions

TaskCreationOption

.AttachedToParent与一个父任务关联

.None默认行为

.LongRunning长时间操作,调度器可对其用粗颗粒度的操作,一般大于一秒

.PreferFairness告诉调度器,更早被调度的任务更早执行

 

task.ContinueWith延续任务

TaskContinuationOptions操作或者条件

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

转载于:https://www.cnblogs.com/ftchen/p/4657896.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值