Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Linq / Parallel / Utils / PLINQETWProvider.cs / 1305376 / PLINQETWProvider.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ // // PlinqEtwProvider.cs // //[....] // // A helper class for firing ETW events related to PLINQ APIs // // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- using System; using System.Collections.Generic; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Diagnostics.Eventing; namespace System.Linq.Parallel { #if !FEATURE_PAL // PAL doesn't support eventing sealed internal class PlinqEtwProvider : EventProviderBase { // // Defines the singleton instance for the PLINQ ETW provider // // The PLINQ Event provider GUID is {159eeeec-4a14-4418-a8fe-faabcd987887} // public static PlinqEtwProvider Log = new PlinqEtwProvider(); private PlinqEtwProvider() : base(new Guid(0x159eeeec, 0x4a14, 0x4418, 0xa8, 0xfe, 0xfa, 0xab, 0xcd, 0x98, 0x78, 0x87)) { } internal static int s_queryId = 0; //static counter used to generate unique IDs ////// Generates the next consecutive query ID /// internal static int NextQueryId() { return Interlocked.Increment(ref s_queryId); } //------------------------------------------------------------------------------------ // // PLINQ Query Execution Events // // ParallelQueryBegin denotes the entry point for a PLINQ Query, and declares the fork/join context ID // which will be shared by subsequent events fired by tasks that service this query internal void ParallelQueryBegin(int queryId) { if (IsEnabled()) { int taskId = Task.CurrentId ?? 0; WriteEvent(1, 0, taskId, queryId); } } // ParallelQueryBegin denotes the end of PLINQ Query which was declared previously with the same // fork/join context ID. internal void ParallelQueryEnd(int queryId) { if (IsEnabled()) { int taskId = Task.CurrentId ?? 0; WriteEvent(2, 0, taskId, queryId); } } // ParallelQueryFork event denotes the start of an individual task that will service a parallel query. // Before this event is fired, the fork/join context must have been declared with a // ParallelQueryBegin event. internal void ParallelQueryFork(int queryId) { if (IsEnabled()) { int taskId = Task.CurrentId ?? 0; if (IsEnabled()) WriteEvent(3, 0, taskId, queryId); } } // ParallelQueryFork event denotes the end of an individual task that serviced a parallel query. // This should match a previous ParallelFork event with a matching "OriginatingTaskID" internal void ParallelQueryJoin(int queryId) { if (IsEnabled()) { int taskId = Task.CurrentId ?? 0; WriteEvent(4, 0, taskId, queryId); } } } #endif // !FEATURE_PAL } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ // // PlinqEtwProvider.cs // //[....] // // A helper class for firing ETW events related to PLINQ APIs // // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- using System; using System.Collections.Generic; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Diagnostics.Eventing; namespace System.Linq.Parallel { #if !FEATURE_PAL // PAL doesn't support eventing sealed internal class PlinqEtwProvider : EventProviderBase { // // Defines the singleton instance for the PLINQ ETW provider // // The PLINQ Event provider GUID is {159eeeec-4a14-4418-a8fe-faabcd987887} // public static PlinqEtwProvider Log = new PlinqEtwProvider(); private PlinqEtwProvider() : base(new Guid(0x159eeeec, 0x4a14, 0x4418, 0xa8, 0xfe, 0xfa, 0xab, 0xcd, 0x98, 0x78, 0x87)) { } internal static int s_queryId = 0; //static counter used to generate unique IDs ////// Generates the next consecutive query ID /// internal static int NextQueryId() { return Interlocked.Increment(ref s_queryId); } //------------------------------------------------------------------------------------ // // PLINQ Query Execution Events // // ParallelQueryBegin denotes the entry point for a PLINQ Query, and declares the fork/join context ID // which will be shared by subsequent events fired by tasks that service this query internal void ParallelQueryBegin(int queryId) { if (IsEnabled()) { int taskId = Task.CurrentId ?? 0; WriteEvent(1, 0, taskId, queryId); } } // ParallelQueryBegin denotes the end of PLINQ Query which was declared previously with the same // fork/join context ID. internal void ParallelQueryEnd(int queryId) { if (IsEnabled()) { int taskId = Task.CurrentId ?? 0; WriteEvent(2, 0, taskId, queryId); } } // ParallelQueryFork event denotes the start of an individual task that will service a parallel query. // Before this event is fired, the fork/join context must have been declared with a // ParallelQueryBegin event. internal void ParallelQueryFork(int queryId) { if (IsEnabled()) { int taskId = Task.CurrentId ?? 0; if (IsEnabled()) WriteEvent(3, 0, taskId, queryId); } } // ParallelQueryFork event denotes the end of an individual task that serviced a parallel query. // This should match a previous ParallelFork event with a matching "OriginatingTaskID" internal void ParallelQueryJoin(int queryId) { if (IsEnabled()) { int taskId = Task.CurrentId ?? 0; WriteEvent(4, 0, taskId, queryId); } } } #endif // !FEATURE_PAL } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DoubleCollection.cs
- GridView.cs
- DesignBindingConverter.cs
- RenderData.cs
- TextEditor.cs
- XamlInterfaces.cs
- ApplicationDirectory.cs
- Int16AnimationUsingKeyFrames.cs
- PublishLicense.cs
- StateMachineDesignerPaint.cs
- EntityException.cs
- SafeHGlobalHandleCritical.cs
- AsymmetricKeyExchangeDeformatter.cs
- recordstate.cs
- DocumentsTrace.cs
- CheckableControlBaseAdapter.cs
- TypeListConverter.cs
- TypedReference.cs
- DataGridRowAutomationPeer.cs
- HttpEncoderUtility.cs
- GlobalEventManager.cs
- Int32Rect.cs
- ListViewCommandEventArgs.cs
- ValidationSummaryDesigner.cs
- Baml2006SchemaContext.cs
- SHA256.cs
- LinearGradientBrush.cs
- _Semaphore.cs
- SafeBuffer.cs
- ISFClipboardData.cs
- TableCell.cs
- ObjectDataSourceMethodEventArgs.cs
- ExtensionSimplifierMarkupObject.cs
- TimeManager.cs
- HideDisabledControlAdapter.cs
- KerberosSecurityTokenProvider.cs
- CompModSwitches.cs
- CodeChecksumPragma.cs
- SharedRuntimeState.cs
- SelectionItemPattern.cs
- RTLAwareMessageBox.cs
- CatalogZoneBase.cs
- XmlEnumAttribute.cs
- XamlToRtfWriter.cs
- DataKeyPropertyAttribute.cs
- TextEditorSpelling.cs
- MetadataCache.cs
- SmiRequestExecutor.cs
- DbConnectionPool.cs
- SqlDataSourceEnumerator.cs
- ProcessManager.cs
- DbProviderSpecificTypePropertyAttribute.cs
- DataPager.cs
- WasHttpHandlersInstallComponent.cs
- CacheChildrenQuery.cs
- UserPreferenceChangedEventArgs.cs
- ActivityTrace.cs
- TypeExtensionConverter.cs
- VirtualPath.cs
- PkcsMisc.cs
- XPathCompileException.cs
- FixUp.cs
- PingReply.cs
- NameGenerator.cs
- PolyLineSegmentFigureLogic.cs
- InvalidCastException.cs
- baseaxisquery.cs
- CommonObjectSecurity.cs
- Registry.cs
- MeshGeometry3D.cs
- FlowDocument.cs
- IPipelineRuntime.cs
- ItemsPanelTemplate.cs
- GlyphInfoList.cs
- DatePickerAutomationPeer.cs
- TypedTableGenerator.cs
- RawStylusInput.cs
- NameValueCollection.cs
- OdbcTransaction.cs
- ReflectPropertyDescriptor.cs
- AnnotationAdorner.cs
- AuthorizationRule.cs
- LinkedResource.cs
- GlobalProxySelection.cs
- WindowsIdentity.cs
- SelectionProviderWrapper.cs
- Pair.cs
- PieceDirectory.cs
- _Events.cs
- Trace.cs
- OleDbCommand.cs
- ComponentEditorPage.cs
- MarkupExtensionSerializer.cs
- OdbcErrorCollection.cs
- PrimarySelectionAdorner.cs
- GridView.cs
- ResourceManager.cs
- ListDictionary.cs
- NetNamedPipeSecurityElement.cs
- ThreadStaticAttribute.cs