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
- CLRBindingWorker.cs
- COM2ExtendedBrowsingHandler.cs
- StatusBarAutomationPeer.cs
- ApplicationSettingsBase.cs
- Tablet.cs
- ActiveXSite.cs
- ScriptResourceAttribute.cs
- Brushes.cs
- StartUpEventArgs.cs
- SequentialWorkflowRootDesigner.cs
- DataGrid.cs
- ProfessionalColors.cs
- GlyphTypeface.cs
- UpdateException.cs
- CollectionChangedEventManager.cs
- MappingItemCollection.cs
- COM2EnumConverter.cs
- HtmlEmptyTagControlBuilder.cs
- ReflectionUtil.cs
- WpfWebRequestHelper.cs
- Int32Converter.cs
- SqlExpander.cs
- FileLoadException.cs
- UnsafeNativeMethods.cs
- IdnMapping.cs
- InnerItemCollectionView.cs
- CngKeyBlobFormat.cs
- TrackingQueryElement.cs
- TextEmbeddedObject.cs
- StylusPointCollection.cs
- DES.cs
- BufferedMessageData.cs
- EventPropertyMap.cs
- ReadOnlyHierarchicalDataSourceView.cs
- PixelShader.cs
- PackagePartCollection.cs
- ConnectionInterfaceCollection.cs
- WindowAutomationPeer.cs
- LogLogRecordEnumerator.cs
- DataIdProcessor.cs
- xmlformatgeneratorstatics.cs
- DesignerView.Commands.cs
- XmlImplementation.cs
- CodeTryCatchFinallyStatement.cs
- OracleInternalConnection.cs
- VerificationAttribute.cs
- Registry.cs
- SQLChars.cs
- BamlLocalizableResourceKey.cs
- WebServiceHostFactory.cs
- RemoteTokenFactory.cs
- GridViewCommandEventArgs.cs
- MethodBody.cs
- ZoneButton.cs
- XPathNode.cs
- WinHttpWebProxyFinder.cs
- NameValueConfigurationElement.cs
- PropertyToken.cs
- BitmapEffectInput.cs
- IISUnsafeMethods.cs
- PrintPageEvent.cs
- ScrollItemPattern.cs
- DPCustomTypeDescriptor.cs
- SQlBooleanStorage.cs
- ObjectDataSourceDisposingEventArgs.cs
- IPHostEntry.cs
- FieldInfo.cs
- ListViewPagedDataSource.cs
- TextSchema.cs
- SecUtil.cs
- UpDownEvent.cs
- ByteKeyFrameCollection.cs
- SafeUserTokenHandle.cs
- RangeValidator.cs
- DataGridViewColumnHeaderCell.cs
- TextDpi.cs
- IndentTextWriter.cs
- BaseTemplateCodeDomTreeGenerator.cs
- IndexOutOfRangeException.cs
- UnionCodeGroup.cs
- NameObjectCollectionBase.cs
- IISMapPath.cs
- ImplicitInputBrush.cs
- RenderDataDrawingContext.cs
- KeyInterop.cs
- PaperSize.cs
- SourceElementsCollection.cs
- QueryCacheManager.cs
- GlyphShapingProperties.cs
- EnumMember.cs
- PermissionRequestEvidence.cs
- CheckBoxAutomationPeer.cs
- PointValueSerializer.cs
- Boolean.cs
- StronglyTypedResourceBuilder.cs
- WebResponse.cs
- ImageFormat.cs
- ConditionChanges.cs
- HttpCacheParams.cs
- Rules.cs