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
- PnrpPermission.cs
- NumberAction.cs
- CngKeyCreationParameters.cs
- HybridObjectCache.cs
- FindRequestContext.cs
- StdValidatorsAndConverters.cs
- DBNull.cs
- XmlElementAttributes.cs
- MouseActionValueSerializer.cs
- Timer.cs
- TransactionsSectionGroup.cs
- GeometryGroup.cs
- Stopwatch.cs
- CommandBindingCollection.cs
- Constants.cs
- XmlCollation.cs
- PlaceHolder.cs
- SafeNativeMethods.cs
- ObjectContext.cs
- XmlNamespaceDeclarationsAttribute.cs
- PromptBuilder.cs
- HtmlInputControl.cs
- DummyDataSource.cs
- PublishLicense.cs
- TableRowCollection.cs
- DtrList.cs
- Trace.cs
- ExecutionEngineException.cs
- OdbcReferenceCollection.cs
- ItemsPanelTemplate.cs
- SqlParameterizer.cs
- DrawingServices.cs
- XmlSerializerFactory.cs
- SendActivityValidator.cs
- RectangleF.cs
- WsrmTraceRecord.cs
- ImmutableObjectAttribute.cs
- TableAutomationPeer.cs
- SQLChars.cs
- AssemblyCollection.cs
- GZipStream.cs
- StringUtil.cs
- SqlInfoMessageEvent.cs
- EncodingConverter.cs
- SiteMapHierarchicalDataSourceView.cs
- StringStorage.cs
- DialogResultConverter.cs
- XsdBuildProvider.cs
- LoadedOrUnloadedOperation.cs
- CodeStatement.cs
- DocobjHost.cs
- FloatUtil.cs
- LocalizableResourceBuilder.cs
- EditorAttribute.cs
- ChildTable.cs
- AuthStoreRoleProvider.cs
- ResponseBodyWriter.cs
- DataErrorValidationRule.cs
- RequestDescription.cs
- WrappedKeySecurityToken.cs
- LockCookie.cs
- Transform.cs
- BitmapSource.cs
- FixedSOMPage.cs
- AppDomain.cs
- SessionEndedEventArgs.cs
- PathNode.cs
- Vector3DCollection.cs
- LogExtentCollection.cs
- SQLCharsStorage.cs
- CultureSpecificStringDictionary.cs
- SplitterCancelEvent.cs
- SiteMapNodeCollection.cs
- FixedNode.cs
- ResourceManager.cs
- Visitor.cs
- StringFreezingAttribute.cs
- RelatedPropertyManager.cs
- ParserStreamGeometryContext.cs
- DelegateSerializationHolder.cs
- HierarchicalDataBoundControlAdapter.cs
- KnownTypesProvider.cs
- SqlClientFactory.cs
- WindowsEditBox.cs
- PagedDataSource.cs
- XmlSchemaSimpleType.cs
- XmlAttributes.cs
- BuildProvidersCompiler.cs
- DataGridrowEditEndingEventArgs.cs
- VerbConverter.cs
- EventMappingSettingsCollection.cs
- SmiRecordBuffer.cs
- SoundPlayer.cs
- AutomationPatternInfo.cs
- CfgSemanticTag.cs
- ElementUtil.cs
- DSASignatureDeformatter.cs
- CachedTypeface.cs
- TileBrush.cs
- FreeFormDesigner.cs