Exemple #1
0
        public bool Add(T x)
        {
            int            myBucket = x.GetHashCode() % bucketSize; // получается бакет в который надо добавить
            BucketList <T> b        = GetBucketList(myBucket);      // инициализируем при необходимости

            if (!b.Add(x))
            {
                return(false);
            }
            int setSizeNow    = Interlocked.Increment(ref setSize);
            int bucketSizeNow = bucketSize;

            if (setSizeNow / bucketSizeNow > THRESHOLD)
            {
                Interlocked.CompareExchange(ref bucketSize, bucketSizeNow, 2 * bucketSizeNow);
            }
            return(true);
        }
Exemple #2
0
        public bool Add(T x)
        {
            int            myBucket = Math.Abs(x.GetHashCode()) % bucketSize;
            BucketList <T> b        = GetBucketList(myBucket);

            if (!b.Add(x))
            {
                return(false);
            }
            int setSizeNow    = Interlocked.Increment(ref setSize);
            int bucketSizeNow = bucketSize;

            if (setSizeNow / bucketSizeNow > THRESHOLD)
            {
                Interlocked.CompareExchange(
                    ref bucketSize, bucketSizeNow, 2 * bucketSizeNow);
            }
            return(true);
        }