int count;
public void TestNormal()
{
[MethodImpl(MethodImplOptions.NoOptimization)]
static void Incr(ref int v)
{
v++;
}
for (int i = 0; i < 100000000; i++)
{
Incr(ref count);
}
}
public void TestVolatile()
{
for (int i = 0; i < 100000000; i++)
{
Volatile.Write(ref count, Volatile.Read(ref count) + 1);
}
}
public void TestInterlocked()
{
for (int i = 0; i < 100000000; i++)
{
Interlocked.Increment(ref count);
}
}
public void TestLock()
{
for (int i = 0; i < 100000000; i++)
{
lock (this)
{
count++;
}
}
}