Csharp/C Sharp/Thread/Thread Lock
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>