Mega Code Archive

 
Categories / C# Tutorial / Thread
 

Interlocked Increment and Interlocked Decrement

using System; using System.Threading; class Test {     static void Main()     {         Thread thread1 = new Thread(new ThreadStart(ThreadMethod));         Thread thread2 = new Thread(new ThreadStart(ThreadMethod));         thread1.Start();         thread2.Start();         thread1.Join();         thread2.Join();         GC.Collect();         GC.WaitForPendingFinalizers();         Console.WriteLine(CountClass.UnsafeInstanceCount);         Console.WriteLine(CountClass.SafeInstanceCount);     }     static void ThreadMethod()     {         for(int i = 0; i < 10; i++)         {             new CountClass();         }     } } class CountClass {     static int unsafeInstanceCount = 0;     static int   safeInstanceCount = 0;     static public int UnsafeInstanceCount     {         get {return unsafeInstanceCount;}     }     static public int SafeInstanceCount     {         get {return safeInstanceCount;}     }     public CountClass()     {         unsafeInstanceCount++;         Interlocked.Increment(ref safeInstanceCount);     }     ~CountClass()     {         unsafeInstanceCount--;         Interlocked.Decrement(ref safeInstanceCount);     } }