114 lines
10 KiB
C#

<EFBFBD><EFBFBD>using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BenchmarkDotNet;
using BenchmarkDotNet.Attributes;
using BenchMarkDotnetStudy.Core;
namespace BenchMarkDotnetStudy.BenchmarkStudy
{
/// <summary>
/// Counter <EFBFBD>W<EFBFBD>QKmՋ
/// </summary>
public class CounterTest2
{
[Benchmark]
public void Thread32_Test()
{
Counter counter = new Counter();
List<Thread> threads = new List<Thread>()
{
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
new Thread(() => counter.Increment() ),
};
threads.ForEach(t => t.Start());
threads.ForEach(t => t.Join());
Console.WriteLine($"<00>e<EFBFBD>l<EFBFBD>~_g<5F>e<1A>TotalCounter = {Counter.TotalCounter}");
}
[Benchmark]
public void Thread32_Test2()
{
Counter counter = new Counter();
List<Thread> threads = new List<Thread>()
{
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
new Thread(() => counter.IncrementWithInterlocked() ),
};
threads.ForEach(t => t.Start());
threads.ForEach(t => t.Join());
}
}
}