Mega Code Archive

 
Categories / C# / Thread
 

Threading and Asynchronous Operations

/* 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();     } }