Use lock to synchronize access to an object : lock « Thread « C# / CSharp Tutorial






using System; 
using System.Threading; 
 
class MyThread {  
  public Thread thrd;  
 
  public MyThread(string name, int[] nums) {  
    thrd = new Thread(this.run); 
    thrd.Name = name; 
    thrd.Start();
  }  
  
  void run() {  
    int answer = sumIt(10);           
  }  
  public int sumIt(int nums) {  
    lock(this) { 
       Console.WriteLine(Thread.CurrentThread.Name);  
       Thread.Sleep(100);
      }  
      return 0; 
  } 
}  

  
  
class MainClass {  
  public static void Main() {  
    int[] a = {1, 2, 3, 4, 5};  
  
    MyThread mt1 = new MyThread("Child #1", a);  
    MyThread mt2 = new MyThread("Child #2", a);  
  
    mt1.thrd.Join();  
    mt2.thrd.Join();  
  }  
}
Child #1
Child #2








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)