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
- ConsoleCancelEventArgs.cs
- Stroke.cs
- ForceCopyBuildProvider.cs
- GridItemCollection.cs
- SelectedPathEditor.cs
- listitem.cs
- TextBoxAutoCompleteSourceConverter.cs
- ManipulationDevice.cs
- RepeaterItem.cs
- HttpListener.cs
- TextParaLineResult.cs
- DataColumnCollection.cs
- CodeArrayIndexerExpression.cs
- DataListDesigner.cs
- UnicodeEncoding.cs
- ListenerElementsCollection.cs
- RegexCompilationInfo.cs
- PageThemeCodeDomTreeGenerator.cs
- BrowserInteropHelper.cs
- DefaultAssemblyResolver.cs
- BamlRecordWriter.cs
- ThreadSafeList.cs
- ComboBoxRenderer.cs
- MessageHeaders.cs
- SQLInt16.cs
- XPathLexer.cs
- ElementProxy.cs
- XomlCompilerResults.cs
- RuntimeHandles.cs
- CatalogPartCollection.cs
- ReachSerializationUtils.cs
- SocketPermission.cs
- SocketPermission.cs
- LogLogRecordHeader.cs
- DoubleCollection.cs
- XmlWellformedWriter.cs
- CharKeyFrameCollection.cs
- RequestSecurityTokenForRemoteTokenFactory.cs
- Wizard.cs
- PerfService.cs
- FirewallWrapper.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- XmlReader.cs
- smtppermission.cs
- ResolveCriteria11.cs
- IIS7UserPrincipal.cs
- DBDataPermission.cs
- VBIdentifierName.cs
- AnonymousIdentificationSection.cs
- GridItem.cs
- EntitySetDataBindingList.cs
- PermissionSetTriple.cs
- GenericTypeParameterBuilder.cs
- ArraySortHelper.cs
- ConstraintEnumerator.cs
- SafeLibraryHandle.cs
- DWriteFactory.cs
- HtmlHistory.cs
- Symbol.cs
- StringExpressionSet.cs
- FillErrorEventArgs.cs
- LambdaCompiler.Logical.cs
- TextBoxDesigner.cs
- HttpServerVarsCollection.cs
- ProfileSection.cs
- ViewBase.cs
- MatrixAnimationUsingKeyFrames.cs
- SuppressMergeCheckAttribute.cs
- NameValueSectionHandler.cs
- IHttpResponseInternal.cs
- DynamicPropertyReader.cs
- DataGridViewColumnTypePicker.cs
- ObjectDataSourceFilteringEventArgs.cs
- ColorKeyFrameCollection.cs
- ImageSource.cs
- WindowsAuthenticationModule.cs
- TextCompositionManager.cs
- OneToOneMappingSerializer.cs
- DataGridViewRow.cs
- PeerObject.cs
- TargetInvocationException.cs
- TabControl.cs
- XmlNotation.cs
- QueryStatement.cs
- Journal.cs
- CollectionConverter.cs
- PointAnimation.cs
- FormsIdentity.cs
- WorkflowTimerService.cs
- SqlResolver.cs
- XmlReader.cs
- AttributeUsageAttribute.cs
- DataGridViewLinkColumn.cs
- InternalsVisibleToAttribute.cs
- BuilderPropertyEntry.cs
- InvalidAsynchronousStateException.cs
- activationcontext.cs
- StrongNameUtility.cs
- QuaternionValueSerializer.cs
- MatchSingleFxEngineOpcode.cs