共用方式為


工作平行程式庫和 PLINQ 中的 ETW 事件

「工作平行程式庫」與 PLINQ 都會產生「Windows 事件追蹤」(Event Trace for Windows,ETW) 事件,您可以利用它們,透過使用「Windows 效能分析器」之類的工具,來對應用程式進行程式碼剖析和疑難排解。 然而,在大部分情節中,對平行應用程式程式碼進行程式碼剖析的最佳做法是使用 Visual Studio Team Edition 中的 並行視覺化檢視

工作平行程式庫 ETW 事件

在 EVENT_HEADER 結構中,ParallelFor()、ParallelForEach() 和 ParallelInvoke() 所產生事件的 ProviderId GUID 為:

0x2e5dba47, 0xa3d2, 0x4d16, 0x8e, 0xe0, 0x66, 0x71, 0xff, 0xdc, 0xd7, 0xb5

平行迴圈開始

EVENT_DESCRIPTOR.Task = 1

EVENT_DESCRIPTOR.Id = 1

使用者資料

名稱

型別

描述

OriginatingTaskSchedulerID

System.Int32

啟動迴圈之 TaskScheduler 的 ID。

OriginatingTaskID

System.Int32

啟動迴圈之工作的 ID。

ForkJoinContextID

System.Int32

唯一識別項,用來表示具有分叉/加入語意之事件的巢狀和配對。

OperationType

System.Int32

指出迴圈型別:

1 = ParallelInvoke

2 = ParallelFor

3 = ParallelForEach

InclusiveFrom

System.Int64

迴圈計數器的起始值

ExclusiveTo

System.Int64

迴圈計數器的結束值

平行迴圈結束

EVENT_DESCRIPTOR.Task = 2

EVENT_DESCRIPTOR.Id = 2

使用者資料

名稱

型別

描述

OriginatingTaskSchedulerID

System.Int32

啟動迴圈之 TaskScheduler 的 ID。

OriginatingTaskID

System.Int32

啟動迴圈之工作的 ID。

ForkJoinContextID

System.Int32

唯一識別項,用來表示具有分叉/加入語意之事件的巢狀和配對。

totalIterations

System.Int64

反覆項目的總數

平行叫用開始

EVENT_DESCRIPTOR.Task = 3

EVENT_DESCRIPTOR.Id = 3

使用者資料

名稱

型別

描述

OriginatingTaskSchedulerID

System.Int32

啟動迴圈之 TaskScheduler 的 ID。

OriginatingTaskID

System.Int32

啟動迴圈之工作的 ID。

ForkJoinContextID

System.Int32

唯一識別項,用來表示具有分叉/加入語意之事件的巢狀和配對。

totalIterations

System.Int64

反覆項目的總數

operationType

System.Int32

指出迴圈型別:

1 = ParallelInvoke

2 = ParallelFor

3 = ParallelForEach

ActionCount

System.Int32

將在平行叫用中執行的動作數目。

平行叫用結束

EVENT_DESCRIPTOR.Task = 4

EVENT_DESCRIPTOR.Id = 4

使用者資料

名稱

型別

描述

OriginatingTaskSchedulerID

System.Int32

啟動迴圈之 TaskScheduler 的 ID。

OriginatingTaskID

System.Int32

啟動迴圈之工作的 ID。

ForkJoinContextID

System.Int32

唯一識別項,用來表示具有分叉/加入語意之事件的巢狀和配對。

PLINQ ETW 事件

PLINQ 的 EVENT_HEADER.ProviderId GUID 為:

0x159eeeec, 0x4a14, 0x4418, 0xa8, 0xfe, 0xfa, 0xab, 0xcd, 0x98, 0x78, 0x87

平行查詢開始

EVENT_DESCRIPTOR.Task = 1

EVENT_DESCRIPTOR.Id = 1

使用者資料

名稱

型別

描述

OriginatingTaskSchedulerID

System.Int32

啟動迴圈之 TaskScheduler 的 ID。

OriginatingTaskID

System.Int32

啟動迴圈之工作的 ID。

QueryID

System.Int32

唯一查詢識別項。

平行查詢結束

EVENT_DESCRIPTOR.Task = 2

EVENT_DESCRIPTOR.Id = 2

使用者資料

名稱

型別

描述

OriginatingTaskSchedulerID

System.Int32

啟動迴圈之 TaskScheduler 的 ID。

OriginatingTaskID

System.Int32

啟動迴圈之工作的 ID。

QueryID

System.Int32

唯一查詢識別項。

請參閱

概念

工作平行程式庫

平行 LINQ (PLINQ)

其他資源

.NET Framework 中的 ETW 事件