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); }
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); }
protected override void incrementCountAtIndex(int index) { long criticalValue = wrp.WriterCriticalSectionEnter(); try { activeCounts.Increment(NormalizeIndex(index, activeCountsNormalizingIndexOffset, activeCounts.Length)); } finally { wrp.WriterCriticalSectionExit(criticalValue); } }
public void Increment() { _num.Increment(1); }