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
- Mapping.cs
- WindowsTab.cs
- CodeExpressionCollection.cs
- CheckBox.cs
- DLinqDataModelProvider.cs
- SocketAddress.cs
- XsltException.cs
- NullableFloatAverageAggregationOperator.cs
- RegexCompiler.cs
- Pen.cs
- WebPartZoneBase.cs
- DriveInfo.cs
- RootContext.cs
- Label.cs
- RowToFieldTransformer.cs
- Button.cs
- Win32.cs
- XmlSortKey.cs
- Journaling.cs
- SpeechEvent.cs
- RichTextBoxContextMenu.cs
- PageContentCollection.cs
- CompositeScriptReferenceEventArgs.cs
- RawStylusInput.cs
- MimeTypeMapper.cs
- Expander.cs
- HtmlDocument.cs
- SourceFilter.cs
- ThreadAttributes.cs
- Error.cs
- SiteMapNodeItemEventArgs.cs
- CollectionBase.cs
- InputMethodStateChangeEventArgs.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- UiaCoreProviderApi.cs
- Documentation.cs
- UIPropertyMetadata.cs
- AccessibilityHelperForXpWin2k3.cs
- DbConnectionStringCommon.cs
- FlowDocumentFormatter.cs
- LabelLiteral.cs
- MobileControlPersister.cs
- TreeViewBindingsEditorForm.cs
- ScrollBar.cs
- Int32Storage.cs
- DiagnosticTrace.cs
- TextureBrush.cs
- DataGridViewCellCancelEventArgs.cs
- PrintDialog.cs
- GatewayDefinition.cs
- MemberListBinding.cs
- PrefixHandle.cs
- TypeDependencyAttribute.cs
- PerformanceCounterPermissionEntryCollection.cs
- BufferBuilder.cs
- SHA512Cng.cs
- Win32.cs
- InputDevice.cs
- SystemIPv4InterfaceProperties.cs
- sortedlist.cs
- Mutex.cs
- CryptoKeySecurity.cs
- SqlStream.cs
- NamedPermissionSet.cs
- PersonalizationState.cs
- EncoderParameters.cs
- TimeSpanStorage.cs
- NotCondition.cs
- XmlAttributeCollection.cs
- SendKeys.cs
- IDispatchConstantAttribute.cs
- ResourceManager.cs
- AnnotationAuthorChangedEventArgs.cs
- WebPartHelpVerb.cs
- IndexedGlyphRun.cs
- ThemeInfoAttribute.cs
- Single.cs
- ParameterToken.cs
- RequestResizeEvent.cs
- OdbcCommandBuilder.cs
- SelectionRangeConverter.cs
- SystemGatewayIPAddressInformation.cs
- VisualBrush.cs
- XmlSerializerObjectSerializer.cs
- SecurityTraceRecordHelper.cs
- WindowsGraphicsWrapper.cs
- FormViewUpdatedEventArgs.cs
- FreeFormDesigner.cs
- TaskResultSetter.cs
- ImageDrawing.cs
- WebEvents.cs
- ConnectionOrientedTransportBindingElement.cs
- DuplicateMessageDetector.cs
- CollectionViewGroup.cs
- ItemChangedEventArgs.cs
- OdbcParameter.cs
- RectangleF.cs
- RelationshipEndCollection.cs
- TypeContext.cs
- PropertyInformationCollection.cs