Csharp/C Sharp/Thread/Thread Lock

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

illustrates the use of the Interlocked object

<source lang="csharp"> /* Mastering Visual C# .NET by Jason Price, Mike Gunderloy Publisher: Sybex; ISBN: 0782129110

  • /

/*

 Example14_9.cs illustrates the use of the Interlocked object
  • /

using System; using System.Threading; public class Example14_9 {

 // a shared counter
 private int Runs = 0;
 // the CountUp method increments the shared counter
 public  void CountUp() 
 {
   while (Runs < 10)
   {
     Interlocked.Increment(ref Runs);
     Console.WriteLine(Thread.CurrentThread.Name + " " + Runs);
     Thread.Sleep(1000);
   } 
 }
 public static void Main() 
 {
   // Make an instance of this class
   Example14_9 ex = new Example14_9();
   // And run the test outside of the static method
   ex.RunThreads();
 }
 public void RunThreads()
 {
   // create and launch two threads
   Thread t2 = new Thread(new ThreadStart(CountUp));
   t2.Name = "t2";
   Thread t3 = new Thread(new ThreadStart(CountUp));
   t3.Name = "t3";
   t2.Start();
   t3.Start();
 }

}


      </source>


illustrates the use of the lock object

<source lang="csharp"> /* Mastering Visual C# .NET by Jason Price, Mike Gunderloy Publisher: Sybex; ISBN: 0782129110

  • /

/*

 Example14_8.cs illustrates the use of the lock object
  • /

using System; using System.Threading; public class Example14_8 {

 // a shared counter
 private int Runs = 0;
 // the CountUp method increments the shared counter
 public  void CountUp() 
 {
   while (Runs < 10)
   {
     lock(this)
     {
       int Temp = Runs;
       Temp++;
       Console.WriteLine(Thread.CurrentThread.Name + " " + Temp);
       Thread.Sleep(1000);
       Runs = Temp;
     }
   } 
 }
 public static void Main() 
 {
   // Make an instance of this class
   Example14_8 ex = new Example14_8();
   // And run the test outside of the static method
   ex.RunThreads();
 }
 public void RunThreads()
 {
   // create and launch two threads
   Thread t2 = new Thread(new ThreadStart(CountUp));
   t2.Name = "t2";
   Thread t3 = new Thread(new ThreadStart(CountUp));
   t3.Name = "t3";
   t2.Start();
   t3.Start();
 }

}


      </source>