Example #1
0
        public void can_increment()
        {
            var array = new AtomicLongArray(10);

            array.SetValue(1, 3);

            array.Increment(1).Should().Be(4);
            array.Increment(1, 4).Should().Be(8);

            array.GetAndIncrement(1).Should().Be(8);
            array.GetValue(1).Should().Be(9);
        }
        public void AtomicLongArray_CanIncrement()
        {
            var array = new AtomicLongArray(10);

            array.SetValue(1, 3);

            array.Increment(1).Should().Be(4);
            array.Increment(1, 4).Should().Be(8);

            array.GetAndIncrement(1).Should().Be(8);
            array.GetValue(1).Should().Be(9);
        }
Example #3
0
        public void long_array_is_correct_with_concurrency(int total, int threadCount)
        {
            var array  = new AtomicLongArray(100);
            var thread = new List <Thread>();

            for (var i = 0; i < threadCount; i++)
            {
                thread.Add(new Thread(() =>
                {
                    int index = 0;
                    for (long j = 0; j < total; j++)
                    {
                        array.Increment(index++);
                        if (index == array.Length)
                        {
                            index = 0;
                        }
                    }
                }));
            }

            thread.ForEach(t => t.Start());
            thread.ForEach(t => t.Join());

            long sum = 0;

            for (int i = 0; i < array.Length; i++)
            {
                sum += array.GetValue(i);
            }

            sum.Should().Be(total * threadCount);
        }
Example #4
0
        protected override void incrementCountAtIndex(int index)
        {
            long criticalValue = wrp.WriterCriticalSectionEnter();

            try
            {
                activeCounts.Increment(NormalizeIndex(index, activeCountsNormalizingIndexOffset, activeCounts.Length));
            }
            finally
            {
                wrp.WriterCriticalSectionExit(criticalValue);
            }
        }
Example #5
0
 public void Increment()
 {
     _num.Increment(1);
 }