程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#並行編程,

c#並行編程,

編輯:C#入門知識

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操作或者條件

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved