Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Linq / Parallel / Merging / OrderPreservingMergeHelper.cs / 1305376 / OrderPreservingMergeHelper.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ // // OrderPreservingMergeHelper.cs // //[....] // // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- using System.Collections.Generic; using System.Threading.Tasks; using System.Diagnostics.Contracts; namespace System.Linq.Parallel { ////// The order preserving merge helper guarantees the output stream is in a specific order. This is done /// by comparing keys from a set of already-sorted input partitions, and coalescing output data using /// incremental key comparisons. /// ////// internal class OrderPreservingMergeHelper : IMergeHelper { private QueryTaskGroupState m_taskGroupState; // State shared among tasks. private PartitionedStream m_partitions; // Source partitions. private Shared m_results; // The array where results are stored. private TaskScheduler m_taskScheduler; // The task manager to execute the query. //------------------------------------------------------------------------------------ // Instantiates a new merge helper. // // Arguments: // partitions - the source partitions from which to consume data. // ignoreOutput - whether we're enumerating "for effect" or for output. // internal OrderPreservingMergeHelper(PartitionedStream partitions, TaskScheduler taskScheduler, CancellationState cancellationState, int queryId) { Contract.Assert(partitions != null); TraceHelpers.TraceInfo("KeyOrderPreservingMergeHelper::.ctor(..): creating an order preserving merge helper"); m_taskGroupState = new QueryTaskGroupState(cancellationState, queryId); m_partitions = partitions; m_results = new Shared (null); m_taskScheduler = taskScheduler; } //----------------------------------------------------------------------------------- // Schedules execution of the merge itself. // // Arguments: // ordinalIndexState - the state of the ordinal index of the merged partitions // void IMergeHelper .Execute() { OrderPreservingSpoolingTask .Spool(m_taskGroupState, m_partitions, m_results, m_taskScheduler); } //----------------------------------------------------------------------------------- // Gets the enumerator from which to enumerate output results. // IEnumerator IMergeHelper .GetEnumerator() { Contract.Assert(m_results.Value != null); return ((IEnumerable )m_results.Value).GetEnumerator(); } //----------------------------------------------------------------------------------- // Returns the results as an array. // public TInputOutput[] GetResultsAsArray() { return m_results.Value; } } } // 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
- LogicalMethodInfo.cs
- RoutedEventValueSerializer.cs
- ToolStripSeparatorRenderEventArgs.cs
- ProfilePropertyMetadata.cs
- DrawingVisual.cs
- VarRemapper.cs
- CompressedStack.cs
- ItemDragEvent.cs
- EventToken.cs
- DropShadowBitmapEffect.cs
- TryLoadRunnableWorkflowCommand.cs
- NativeCppClassAttribute.cs
- IconConverter.cs
- Scalars.cs
- SubclassTypeValidator.cs
- IxmlLineInfo.cs
- PrintingPermission.cs
- HeaderFilter.cs
- DataSourceConverter.cs
- LongAverageAggregationOperator.cs
- DbProviderServices.cs
- CallSite.cs
- ListViewInsertEventArgs.cs
- CultureSpecificCharacterBufferRange.cs
- listitem.cs
- TemplatedEditableDesignerRegion.cs
- MemoryStream.cs
- FixedPosition.cs
- MobileContainerDesigner.cs
- SelectorItemAutomationPeer.cs
- NameValueFileSectionHandler.cs
- HttpAsyncResult.cs
- OpenTypeLayout.cs
- WebPartTransformer.cs
- StoragePropertyMapping.cs
- UTF7Encoding.cs
- SizeConverter.cs
- DeclarativeCatalogPartDesigner.cs
- HttpException.cs
- OperationFormatStyle.cs
- _ProxyChain.cs
- ColumnPropertiesGroup.cs
- ConfigViewGenerator.cs
- ImageListImage.cs
- SurrogateEncoder.cs
- SHA1.cs
- ExpressionBuilderCollection.cs
- PropertyGroupDescription.cs
- StatusBarPanel.cs
- RelatedCurrencyManager.cs
- TextAnchor.cs
- OdbcEnvironmentHandle.cs
- PageTextBox.cs
- DocumentSequenceHighlightLayer.cs
- GeneralTransform2DTo3D.cs
- NonBatchDirectoryCompiler.cs
- WebWorkflowRole.cs
- Context.cs
- CompositeControl.cs
- COMException.cs
- AddingNewEventArgs.cs
- DateTime.cs
- TableLayoutPanel.cs
- Evaluator.cs
- TableHeaderCell.cs
- FixedBufferAttribute.cs
- SafeMarshalContext.cs
- TextFormatter.cs
- TransactedBatchContext.cs
- HostedTransportConfigurationManager.cs
- TypeDescriptor.cs
- Cursor.cs
- FixedTextBuilder.cs
- Calendar.cs
- FileVersionInfo.cs
- SpoolingTask.cs
- ExpressionBuilder.cs
- VectorAnimationUsingKeyFrames.cs
- WebBrowsableAttribute.cs
- AssemblySettingAttributes.cs
- SqlConnectionFactory.cs
- NamedPipeChannelFactory.cs
- WCFModelStrings.Designer.cs
- SymbolType.cs
- ObjectMemberMapping.cs
- SignatureDescription.cs
- XmlDocument.cs
- ObjectNavigationPropertyMapping.cs
- TrackingMemoryStream.cs
- LabelDesigner.cs
- SettingsSection.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- FixedSOMPage.cs
- EventDescriptor.cs
- TimeSpanValidator.cs
- BindingMemberInfo.cs
- GridPatternIdentifiers.cs
- ValueTypeFixupInfo.cs
- RegexRunnerFactory.cs
- TextLine.cs