Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WindowsGraphics2.cs
- AddingNewEventArgs.cs
- ListViewItem.cs
- CounterSample.cs
- TransferMode.cs
- QilList.cs
- TypeSystemProvider.cs
- CallbackHandler.cs
- Point3DAnimation.cs
- NegatedCellConstant.cs
- CodeArrayCreateExpression.cs
- SecurityRuntime.cs
- DeflateInput.cs
- HtmlLink.cs
- Task.cs
- CfgSemanticTag.cs
- XmlEncodedRawTextWriter.cs
- FontCacheUtil.cs
- FusionWrap.cs
- EndpointDispatcherTable.cs
- WindowsListViewSubItem.cs
- XmlnsCache.cs
- XmlCharCheckingWriter.cs
- DBConnectionString.cs
- TextTreeInsertElementUndoUnit.cs
- webeventbuffer.cs
- LoginViewDesigner.cs
- EventPropertyMap.cs
- CheckBoxBaseAdapter.cs
- NominalTypeEliminator.cs
- PKCS1MaskGenerationMethod.cs
- XmlLanguage.cs
- ChangeInterceptorAttribute.cs
- BrowserInteropHelper.cs
- ProtocolsSection.cs
- GenericRootAutomationPeer.cs
- DateTimeOffset.cs
- WebPartPersonalization.cs
- HttpListenerContext.cs
- base64Transforms.cs
- ToolBarButton.cs
- SQLMoneyStorage.cs
- RelationshipType.cs
- OdbcDataReader.cs
- DefaultEvaluationContext.cs
- DBCommandBuilder.cs
- ArraySet.cs
- MessageRpc.cs
- ToolboxItemCollection.cs
- CounterCreationDataCollection.cs
- FixedTextView.cs
- EventSinkHelperWriter.cs
- MembershipUser.cs
- TreeViewImageIndexConverter.cs
- Camera.cs
- Query.cs
- MenuItem.cs
- BufferedReadStream.cs
- PersonalizationState.cs
- CardSpaceException.cs
- QilVisitor.cs
- FileLoadException.cs
- HideDisabledControlAdapter.cs
- DataBoundControl.cs
- objectquery_tresulttype.cs
- Button.cs
- PerformanceCounterPermissionAttribute.cs
- FrameworkContentElement.cs
- SpotLight.cs
- FileCodeGroup.cs
- RectIndependentAnimationStorage.cs
- MethodBody.cs
- WebPartConnectionCollection.cs
- QuaternionAnimationBase.cs
- WindowsGraphicsCacheManager.cs
- ResourceType.cs
- ServiceHttpHandlerFactory.cs
- odbcmetadatacolumnnames.cs
- NullableDecimalAverageAggregationOperator.cs
- MaterialGroup.cs
- AbstractSvcMapFileLoader.cs
- URLAttribute.cs
- SystemIcons.cs
- Point4DValueSerializer.cs
- ConfigUtil.cs
- Hash.cs
- TextBox.cs
- FilteredAttributeCollection.cs
- CaseInsensitiveComparer.cs
- EnumMember.cs
- TriggerActionCollection.cs
- DescriptionAttribute.cs
- FontFamily.cs
- TreeViewItem.cs
- HttpConfigurationSystem.cs
- TaskbarItemInfo.cs
- FtpWebRequest.cs
- DragDeltaEventArgs.cs
- TableChangeProcessor.cs
- ActivityDefaults.cs