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
- AuthorizationSection.cs
- StylusTip.cs
- DetailsViewRow.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- BaseCodeDomTreeGenerator.cs
- TopClause.cs
- LineServicesCallbacks.cs
- LongValidator.cs
- CompiledELinqQueryState.cs
- XmlUtil.cs
- DeviceFilterEditorDialog.cs
- IDQuery.cs
- CompositeControl.cs
- CallbackException.cs
- TreeNodeCollection.cs
- DurableInstanceManager.cs
- BindingElementExtensionElement.cs
- AccessibleObject.cs
- ExtractorMetadata.cs
- CreateUserWizardStep.cs
- XmlQueryCardinality.cs
- LineMetrics.cs
- SqlClientMetaDataCollectionNames.cs
- smtppermission.cs
- CompilerScopeManager.cs
- HttpMethodAttribute.cs
- XmlAttributeCollection.cs
- DocumentPageTextView.cs
- Regex.cs
- FeatureSupport.cs
- FormattedText.cs
- Transform3DGroup.cs
- PhysicalFontFamily.cs
- XmlSchemaValidationException.cs
- FormatConvertedBitmap.cs
- TagMapInfo.cs
- ProfessionalColors.cs
- IdentityHolder.cs
- PageRanges.cs
- CmsInterop.cs
- SignatureDescription.cs
- SearchForVirtualItemEventArgs.cs
- Misc.cs
- UpdatePanelControlTrigger.cs
- TdsRecordBufferSetter.cs
- WindowsPen.cs
- CompilerTypeWithParams.cs
- RoleExceptions.cs
- DocumentGrid.cs
- SerializationStore.cs
- MouseCaptureWithinProperty.cs
- EpmTargetTree.cs
- UpdateCompiler.cs
- ServiceOperationParameter.cs
- ManagedCodeMarkers.cs
- Int16AnimationUsingKeyFrames.cs
- IsolatedStorage.cs
- HandlerBase.cs
- _TLSstream.cs
- SafePEFileHandle.cs
- GeometryDrawing.cs
- LoginStatusDesigner.cs
- TableRowCollection.cs
- ExecutionEngineException.cs
- figurelength.cs
- StrongNameIdentityPermission.cs
- PersonalizableTypeEntry.cs
- TextInfo.cs
- AutomationIdentifierGuids.cs
- ObjectViewEntityCollectionData.cs
- CustomWebEventKey.cs
- WebPartTracker.cs
- PathData.cs
- EdmSchemaError.cs
- ScriptBehaviorDescriptor.cs
- XmlIlTypeHelper.cs
- RichTextBoxAutomationPeer.cs
- FixedSOMImage.cs
- ClientSettings.cs
- UrlMappingsSection.cs
- IndependentAnimationStorage.cs
- FrugalMap.cs
- StrongNameIdentityPermission.cs
- AutomationPatternInfo.cs
- SqlClientWrapperSmiStreamChars.cs
- Triangle.cs
- SqlWebEventProvider.cs
- ProviderBase.cs
- SQLChars.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- X509UI.cs
- InheritanceAttribute.cs
- SettingsContext.cs
- RuntimeConfig.cs
- RtfControlWordInfo.cs
- EntityCollection.cs
- DeviceSpecificDialogCachedState.cs
- LayoutTable.cs
- ListViewPagedDataSource.cs
- RegistryKey.cs