Threading and Asynchronous Operations:Access Reordering and Volatile
/* A Programmer's Introduction to C# (Second Edition) by Eric Gunnerson Publisher: Apress L.P. ISBN: 1-893115-62-3 */ // 29 - Threading and Asynchronous Operations\Access Reordering and Volatile // copyright 2000 Eric Gunnerson using System; using System.Threading; class Problem { int x; int y; int curx; int cury; public Problem() { x = 0; y = 0; } public void Process1() { x = 1; cury = y; } public void Process2() { y = 1; curx = x; } public void TestCurrent() { Console.WriteLine("curx, cury: {0} {1}", curx, cury); } } public class AccessReorderingandVolatile { public static void Main() { Problem p = new Problem(); Thread t1 = new Thread(new ThreadStart(p.Process1)); Thread t2 = new Thread(new ThreadStart(p.Process2)); t1.Start(); t2.Start(); t1.Join(); t2.Join(); p.TestCurrent(); } }