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
- StackSpiller.Temps.cs
- RegisteredScript.cs
- ImageAnimator.cs
- BidPrivateBase.cs
- DesignerAdapterAttribute.cs
- PipeException.cs
- Rect.cs
- RootAction.cs
- ErrorFormatterPage.cs
- ClientEventManager.cs
- XamlPoint3DCollectionSerializer.cs
- SystemWebSectionGroup.cs
- RotateTransform.cs
- ScriptModule.cs
- ComPlusTypeLoader.cs
- XhtmlCssHandler.cs
- StyleXamlParser.cs
- SymDocumentType.cs
- DigestTraceRecordHelper.cs
- CodeGeneratorAttribute.cs
- LoginDesigner.cs
- XmlFormatWriterGenerator.cs
- CodeArrayIndexerExpression.cs
- MenuItemBinding.cs
- StringDictionary.cs
- SessionStateSection.cs
- HttpWebResponse.cs
- ImageFormat.cs
- HwndProxyElementProvider.cs
- NativeStructs.cs
- ClientUtils.cs
- SiteMapDesignerDataSourceView.cs
- MenuItemBindingCollection.cs
- SelectionWordBreaker.cs
- TdsRecordBufferSetter.cs
- InfoCardXmlSerializer.cs
- ObjectContext.cs
- TrackingMemoryStream.cs
- BamlResourceSerializer.cs
- UInt32Converter.cs
- Control.cs
- RawUIStateInputReport.cs
- ScrollableControl.cs
- NotifyCollectionChangedEventArgs.cs
- FixedSOMTable.cs
- WindowsRichEditRange.cs
- CallSiteBinder.cs
- ColorConvertedBitmap.cs
- InputManager.cs
- NativeCppClassAttribute.cs
- MaskedTextBoxDesigner.cs
- TransactedReceiveData.cs
- DetailsViewInsertedEventArgs.cs
- StorageRoot.cs
- BaseAsyncResult.cs
- ExpandCollapseIsCheckedConverter.cs
- CompilerParameters.cs
- WebPartDisplayModeCancelEventArgs.cs
- CompressionTracing.cs
- TimeZone.cs
- ExtractCollection.cs
- LoadMessageLogger.cs
- RegexWorker.cs
- Italic.cs
- ClrProviderManifest.cs
- ClientProxyGenerator.cs
- ReadWriteSpinLock.cs
- ExpressionBuilder.cs
- AssemblyNameProxy.cs
- SecurityIdentifierConverter.cs
- FileDialogCustomPlacesCollection.cs
- Floater.cs
- ConnectivityStatus.cs
- SQLMoney.cs
- GroupBoxRenderer.cs
- ThreadPoolTaskScheduler.cs
- XslAstAnalyzer.cs
- WebPartCloseVerb.cs
- HttpConfigurationContext.cs
- PrePrepareMethodAttribute.cs
- DataGridGeneralPage.cs
- SettingsAttributes.cs
- UIElementAutomationPeer.cs
- PriorityChain.cs
- documentsequencetextview.cs
- ZipIORawDataFileBlock.cs
- _PooledStream.cs
- WindowsListViewItemStartMenu.cs
- HostSecurityManager.cs
- SpellerStatusTable.cs
- IdnMapping.cs
- ModuleBuilderData.cs
- Dispatcher.cs
- InheritedPropertyChangedEventArgs.cs
- Item.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- PrintControllerWithStatusDialog.cs
- UnauthorizedAccessException.cs
- XmlDocument.cs
- PointCollection.cs