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
- CodeMemberMethod.cs
- ValueOfAction.cs
- DataGridViewButtonCell.cs
- WebPartUtil.cs
- SerializationFieldInfo.cs
- BooleanSwitch.cs
- ToolStripPanelRenderEventArgs.cs
- PreservationFileWriter.cs
- ComboBoxHelper.cs
- LinkLabel.cs
- Vector3DKeyFrameCollection.cs
- UnauthorizedAccessException.cs
- SafeArrayTypeMismatchException.cs
- Polyline.cs
- RedirectionProxy.cs
- LocatorManager.cs
- RootDesignerSerializerAttribute.cs
- WindowsStatic.cs
- OrderByBuilder.cs
- WindowsComboBox.cs
- RoutedPropertyChangedEventArgs.cs
- ProfileInfo.cs
- UserInitiatedNavigationPermission.cs
- ExecutionEngineException.cs
- OperationInfoBase.cs
- Button.cs
- MemberHolder.cs
- EndOfStreamException.cs
- AssertFilter.cs
- SByteConverter.cs
- MetadataItem.cs
- DetailsViewUpdatedEventArgs.cs
- CodeNamespaceImport.cs
- ListViewHitTestInfo.cs
- Stopwatch.cs
- IdentityModelStringsVersion1.cs
- WindowPatternIdentifiers.cs
- KeyNameIdentifierClause.cs
- PolicyImporterElement.cs
- PersianCalendar.cs
- DataGridViewCheckBoxCell.cs
- FunctionNode.cs
- FamilyTypeface.cs
- DataAdapter.cs
- TextInfo.cs
- TypeGeneratedEventArgs.cs
- WebPartConnectionsCancelEventArgs.cs
- XNodeNavigator.cs
- BindingNavigatorDesigner.cs
- SystemThemeKey.cs
- TabItemAutomationPeer.cs
- HebrewCalendar.cs
- BamlWriter.cs
- EntityContainerEmitter.cs
- XmlSerializationWriter.cs
- Double.cs
- TextEditorCopyPaste.cs
- Resources.Designer.cs
- CorePropertiesFilter.cs
- PackageRelationshipCollection.cs
- FigureParaClient.cs
- KnownTypesHelper.cs
- MessageAction.cs
- ScriptingRoleServiceSection.cs
- UTF32Encoding.cs
- BidOverLoads.cs
- HttpCapabilitiesBase.cs
- FindResponse.cs
- Switch.cs
- CustomAttributeFormatException.cs
- FrameworkElementFactoryMarkupObject.cs
- EventHandlersDesigner.cs
- TextDecorationCollection.cs
- StructuralObject.cs
- Component.cs
- HtmlControlPersistable.cs
- DbReferenceCollection.cs
- WindowsEditBoxRange.cs
- ListView.cs
- WindowsRegion.cs
- WebRequest.cs
- Visitor.cs
- DateRangeEvent.cs
- PackageDigitalSignatureManager.cs
- PrivilegedConfigurationManager.cs
- GroupBoxRenderer.cs
- State.cs
- TagPrefixInfo.cs
- SqlTriggerAttribute.cs
- ExtendedTransformFactory.cs
- XmlTextAttribute.cs
- FileClassifier.cs
- PngBitmapDecoder.cs
- SelectedCellsCollection.cs
- TrackingCondition.cs
- WebSysDisplayNameAttribute.cs
- MultiAsyncResult.cs
- Overlapped.cs
- KeyNotFoundException.cs
- QilUnary.cs