OrderedHashRepartitionStream.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Linq / Parallel / Partitioning / OrderedHashRepartitionStream.cs / 1305376 / OrderedHashRepartitionStream.cs

                            // ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 
// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
// 
// OrderedHashRepartitionStream.cs 
//
// [....] 
//
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

using System.Collections.Generic; 
using System.Threading;
 
namespace System.Linq.Parallel 
{
    internal class OrderedHashRepartitionStream : HashRepartitionStream 
    {
        internal OrderedHashRepartitionStream(
            PartitionedStream inputStream, Func hashKeySelector,
            IEqualityComparer hashKeyComparer, IEqualityComparer elementComparer, CancellationToken cancellationToken) 
            : base(inputStream.PartitionCount, inputStream.KeyComparer, hashKeyComparer, elementComparer)
        { 
            m_partitions = 
                new OrderedHashRepartitionEnumerator[inputStream.PartitionCount];
 
            // Initialize state shared among the partitions. A latch and a matrix of buffers. Note that
            // the actual elements in the buffer array are lazily allocated if needed.
            CountdownEvent barrier = new CountdownEvent(inputStream.PartitionCount);
            ListChunk>[,] valueExchangeMatrix = 
                new ListChunk>[inputStream.PartitionCount, inputStream.PartitionCount];
            ListChunk[,] keyExchangeMatrix = new ListChunk[inputStream.PartitionCount, inputStream.PartitionCount]; 
 
            // Now construct each partition object.
            for (int i = 0; i < inputStream.PartitionCount; i++) 
            {
                m_partitions[i] = new OrderedHashRepartitionEnumerator(
                    inputStream[i], inputStream.PartitionCount, i, hashKeySelector, this, barrier,
                    valueExchangeMatrix, keyExchangeMatrix, cancellationToken); 
            }
        } 
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 
// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
// 
// OrderedHashRepartitionStream.cs 
//
// [....] 
//
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

using System.Collections.Generic; 
using System.Threading;
 
namespace System.Linq.Parallel 
{
    internal class OrderedHashRepartitionStream : HashRepartitionStream 
    {
        internal OrderedHashRepartitionStream(
            PartitionedStream inputStream, Func hashKeySelector,
            IEqualityComparer hashKeyComparer, IEqualityComparer elementComparer, CancellationToken cancellationToken) 
            : base(inputStream.PartitionCount, inputStream.KeyComparer, hashKeyComparer, elementComparer)
        { 
            m_partitions = 
                new OrderedHashRepartitionEnumerator[inputStream.PartitionCount];
 
            // Initialize state shared among the partitions. A latch and a matrix of buffers. Note that
            // the actual elements in the buffer array are lazily allocated if needed.
            CountdownEvent barrier = new CountdownEvent(inputStream.PartitionCount);
            ListChunk>[,] valueExchangeMatrix = 
                new ListChunk>[inputStream.PartitionCount, inputStream.PartitionCount];
            ListChunk[,] keyExchangeMatrix = new ListChunk[inputStream.PartitionCount, inputStream.PartitionCount]; 
 
            // Now construct each partition object.
            for (int i = 0; i < inputStream.PartitionCount; i++) 
            {
                m_partitions[i] = new OrderedHashRepartitionEnumerator(
                    inputStream[i], inputStream.PartitionCount, i, hashKeySelector, this, barrier,
                    valueExchangeMatrix, keyExchangeMatrix, cancellationToken); 
            }
        } 
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.

                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK