Shared resource without lock : lock « Thread « C# / CSharp Tutorial






using System;
using System.Threading;

class MainClass
{
  private int Runs = 0;

  public  void CountUp() 
  {
    while (Runs < 10)
    {
      int Temp = Runs;
      Temp++;
      Console.WriteLine(Thread.CurrentThread.Name + " " + Temp);
      Thread.Sleep(1000);
      Runs = Temp;
    }
  }

  public void RunThreads()
  {
    Thread t2 = new Thread(new ThreadStart(CountUp));
    t2.Name = "t2";
    Thread t3 = new Thread(new ThreadStart(CountUp));
    t3.Name = "t3";
    t2.Start();
    t3.Start();
  }
  public static void Main() 
  {
    MainClass ex = new MainClass();
    ex.RunThreads();
  }
}
t2 1
t3 1
t2 2
t3 2
t2 3
t3 3
t2 4
t3 4
t2 5
t3 5
t2 6
t3 6
t3 7
t2 7
^CTerminate batch job (Y/N)? n








20.15.lock
20.15.1.Shared resource without lock
20.15.2.Lock Demo
20.15.3.Use lock to synchronize access to an object
20.15.4.Use of volatile: lock singleton
20.15.5.Using Lock
20.15.6.Use the lock object
20.15.7.Multi Threaded Printing (Synchronizing Threads)