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
- Encoding.cs
- ButtonChrome.cs
- AnnotationHighlightLayer.cs
- ApplicationSecurityInfo.cs
- UnsafeNativeMethods.cs
- EntityDataSourceContextDisposingEventArgs.cs
- XslCompiledTransform.cs
- MetadataSerializer.cs
- RuntimeResourceSet.cs
- StrokeCollection2.cs
- ConnectionStringsExpressionEditor.cs
- RequiredAttributeAttribute.cs
- BasicViewGenerator.cs
- ResourceSet.cs
- QilStrConcat.cs
- UpDownEvent.cs
- UrlPath.cs
- PrintPreviewDialog.cs
- BaseResourcesBuildProvider.cs
- SessionParameter.cs
- QueryCacheEntry.cs
- HMACSHA384.cs
- AsyncResult.cs
- SharedHttpsTransportManager.cs
- TrustManagerMoreInformation.cs
- SafeLocalMemHandle.cs
- ListBoxItemAutomationPeer.cs
- ArgIterator.cs
- AuthenticationService.cs
- AutomationElementCollection.cs
- TransformPattern.cs
- TextRangeEdit.cs
- DoubleAnimationUsingKeyFrames.cs
- DataControlFieldCell.cs
- ListView.cs
- OracleFactory.cs
- FixedPageProcessor.cs
- BaseCodeDomTreeGenerator.cs
- ExcludePathInfo.cs
- OleDbRowUpdatedEvent.cs
- OpacityConverter.cs
- TTSEvent.cs
- UInt32Converter.cs
- DocumentStream.cs
- XmlSignatureProperties.cs
- RegistryExceptionHelper.cs
- ApplicationFileCodeDomTreeGenerator.cs
- PageContentCollection.cs
- MsmqIntegrationChannelListener.cs
- FacetEnabledSchemaElement.cs
- TypeUnloadedException.cs
- DebugTracing.cs
- XmlSerializerVersionAttribute.cs
- AdministrationHelpers.cs
- DisplayInformation.cs
- WebPartEditorOkVerb.cs
- ImageMapEventArgs.cs
- XamlSerializationHelper.cs
- XmlSignatureProperties.cs
- RequestUriProcessor.cs
- GroupBoxRenderer.cs
- PageTheme.cs
- BuildProvidersCompiler.cs
- StructuralObject.cs
- SafeHandles.cs
- BlockCollection.cs
- StateElementCollection.cs
- DataServiceConfiguration.cs
- _ListenerRequestStream.cs
- MailWriter.cs
- WithParamAction.cs
- Polyline.cs
- SchemaSetCompiler.cs
- MultipartContentParser.cs
- TransactionFormatter.cs
- VectorValueSerializer.cs
- DurationConverter.cs
- ControlType.cs
- HeaderedItemsControl.cs
- TableCell.cs
- XsltSettings.cs
- Transform3DCollection.cs
- TransformCollection.cs
- StructuralObject.cs
- TreeNodeConverter.cs
- UIElementAutomationPeer.cs
- Serializer.cs
- DependencyObjectPropertyDescriptor.cs
- FlowThrottle.cs
- SystemSounds.cs
- LogSwitch.cs
- GrammarBuilderBase.cs
- ClickablePoint.cs
- xdrvalidator.cs
- EntityWrapperFactory.cs
- TextContainer.cs
- TextBoxView.cs
- UpdatePanelTriggerCollection.cs
- ContentDesigner.cs
- ToolStripContainerActionList.cs