using System; using System.Threading; public class InterlockTest { public int test; public int add; public int rem; static int s_test; public static int Main() { int a,b; InterlockTest it = new InterlockTest (); it.test = 0; int c = Interlocked.Exchange (ref it.test, 1); if (c != 0) return 1; if (it.test != 1) return 2; a = 1; b = Interlocked.Increment (ref a); if (a != 2) return 3; if (b != 2) return 4; a = 2; b = Interlocked.Decrement (ref a); if (b != 1) return 3; if (a != 1) return 4; string s = IncTest (); if (s != "A1") return 5; s = IncTest (); if (s != "A2") return 6; Thread.MemoryBarrier (); Console.WriteLine ("done!"); return 0; } public static string IncTest () { return "A" + Interlocked.Increment (ref s_test); } }