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
- ResourceWriter.cs
- ComAdminInterfaces.cs
- ClipboardData.cs
- OperandQuery.cs
- ExtenderControl.cs
- CurrencyWrapper.cs
- DataPagerField.cs
- JobInputBins.cs
- ConfigurationStrings.cs
- BamlVersionHeader.cs
- WithStatement.cs
- JsonMessageEncoderFactory.cs
- SingleStorage.cs
- ConnectionInterfaceCollection.cs
- regiisutil.cs
- UpdateProgress.cs
- ExternalCalls.cs
- CodeDomLoader.cs
- DataGridViewComboBoxCell.cs
- SQLRoleProvider.cs
- ThicknessAnimationBase.cs
- JapaneseCalendar.cs
- HttpCapabilitiesSectionHandler.cs
- OdbcError.cs
- ObjectDataSourceFilteringEventArgs.cs
- _PooledStream.cs
- MenuCommand.cs
- AppDomainGrammarProxy.cs
- SqlXmlStorage.cs
- TextMetrics.cs
- ToolStripDropTargetManager.cs
- SyndicationSerializer.cs
- EarlyBoundInfo.cs
- WindowsRichEditRange.cs
- SpecularMaterial.cs
- IndexingContentUnit.cs
- WebPartCatalogCloseVerb.cs
- ServicePoint.cs
- ADMembershipUser.cs
- WindowsContainer.cs
- WCFServiceClientProxyGenerator.cs
- XmlNamedNodeMap.cs
- AggregateNode.cs
- DataColumnPropertyDescriptor.cs
- XpsS0ValidatingLoader.cs
- XmlQueryStaticData.cs
- Regex.cs
- TransformPattern.cs
- StateBag.cs
- Filter.cs
- ColorTranslator.cs
- ProcessHost.cs
- ComplexTypeEmitter.cs
- AutoResizedEvent.cs
- _SslState.cs
- MessageAction.cs
- FileChangesMonitor.cs
- TraceSection.cs
- StringAnimationUsingKeyFrames.cs
- ParentControlDesigner.cs
- KeyValuePairs.cs
- IImplicitResourceProvider.cs
- DocumentGrid.cs
- CodeAccessSecurityEngine.cs
- MimeFormatExtensions.cs
- DataGridLinkButton.cs
- DataColumnPropertyDescriptor.cs
- ResourceDictionary.cs
- XamlRtfConverter.cs
- EFTableProvider.cs
- QuaternionValueSerializer.cs
- ExpressionReplacer.cs
- HttpClientCertificate.cs
- PersonalizationEntry.cs
- DataGridRow.cs
- TargetControlTypeCache.cs
- StylusTip.cs
- SingleKeyFrameCollection.cs
- RightsManagementEncryptionTransform.cs
- CharacterMetricsDictionary.cs
- TripleDESCryptoServiceProvider.cs
- NetPeerTcpBindingElement.cs
- StrokeDescriptor.cs
- DESCryptoServiceProvider.cs
- CriticalFinalizerObject.cs
- ChtmlCalendarAdapter.cs
- ContextMenuStripGroup.cs
- BoundField.cs
- Renderer.cs
- GlobalizationAssembly.cs
- TextServicesLoader.cs
- WebPartsSection.cs
- LinkGrep.cs
- SharedStream.cs
- PostBackTrigger.cs
- FrugalList.cs
- mda.cs
- PackageProperties.cs
- _ScatterGatherBuffers.cs
- CharacterString.cs