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
- FormsAuthenticationEventArgs.cs
- Opcode.cs
- AlgoModule.cs
- LockCookie.cs
- TypeBuilderInstantiation.cs
- ResourceDictionary.cs
- GatewayDefinition.cs
- UnicodeEncoding.cs
- SettingsProviderCollection.cs
- ExecutionEngineException.cs
- EraserBehavior.cs
- ScriptControlDescriptor.cs
- AnnotationMap.cs
- InternalsVisibleToAttribute.cs
- TemplateNameScope.cs
- TreeNode.cs
- KeyInfo.cs
- MetaModel.cs
- SqlUDTStorage.cs
- BooleanAnimationBase.cs
- DefaultClaimSet.cs
- NullableLongSumAggregationOperator.cs
- GradientStop.cs
- SendMailErrorEventArgs.cs
- EngineSite.cs
- DefaultValidator.cs
- DeploymentSection.cs
- SchemaDeclBase.cs
- TablePattern.cs
- InstanceDescriptor.cs
- _LoggingObject.cs
- BaseDataList.cs
- OrthographicCamera.cs
- XmlSignatureManifest.cs
- AsyncStreamReader.cs
- mactripleDES.cs
- GenericAuthenticationEventArgs.cs
- FormViewDeleteEventArgs.cs
- SyncOperationState.cs
- LightweightCodeGenerator.cs
- ModelFunction.cs
- DtrList.cs
- GlyphRunDrawing.cs
- TypeContext.cs
- DBCommand.cs
- QilCloneVisitor.cs
- ConditionCollection.cs
- BitmapDecoder.cs
- Axis.cs
- CriticalHandle.cs
- LinkButton.cs
- ProcessModuleCollection.cs
- DBConnection.cs
- ClrProviderManifest.cs
- WebSysDisplayNameAttribute.cs
- XmlNavigatorStack.cs
- BindableTemplateBuilder.cs
- XmlNotation.cs
- AutomationPropertyInfo.cs
- Point3DCollectionValueSerializer.cs
- GPRECTF.cs
- FixUp.cs
- NameSpaceExtractor.cs
- Composition.cs
- ValueSerializerAttribute.cs
- TimeSpanSecondsConverter.cs
- SubqueryRules.cs
- CapabilitiesPattern.cs
- CallTemplateAction.cs
- ExpressionBuilderContext.cs
- BoundColumn.cs
- Size3D.cs
- XhtmlBasicTextViewAdapter.cs
- RewritingPass.cs
- InternalBase.cs
- WindowCollection.cs
- DropShadowBitmapEffect.cs
- XmlNamespaceManager.cs
- InstanceDescriptor.cs
- IFlowDocumentViewer.cs
- GeometryHitTestParameters.cs
- AppSettingsReader.cs
- DesignerAutoFormatCollection.cs
- SolidBrush.cs
- WebServiceHost.cs
- Process.cs
- AudioBase.cs
- PointCollectionValueSerializer.cs
- CodeAttributeArgumentCollection.cs
- StackBuilderSink.cs
- SHA256Managed.cs
- ListControl.cs
- DateTimeSerializationSection.cs
- XsltConvert.cs
- WebControlAdapter.cs
- BufferedStream.cs
- AdornedElementPlaceholder.cs
- DataListItemCollection.cs
- OleCmdHelper.cs
- ExpressionCopier.cs