Use LocalDataStoreSlot : LocalDataStoreSlot : Thread C# Examples


C# Examples » Thread » LocalDataStoreSlot »

 

Use LocalDataStoreSlot









    
/*
Book  Accelerated  C#  2005
        *  By  Trey  Nash
        *  ISBN:  1-59059-717-6
        *  432  pp.
        *  Published:  Aug  2006
        *  Price:  $39.99
*/

using  System;
using  System.Threading;

public  class  MyClass
{
        static  MyClass()  {
                tlsSlot  =  Thread.AllocateDataSlot();
        }

        public  MyClass()  {
                Console.WriteLine(  "Creating  MyClass"  );
        }

        public  static  MyClass  MyThreadDataClass  {
                get  {
                        Object  obj  =  Thread.GetData(  tlsSlot  );
                        if(  obj  ==  null  )  {
                                obj  =  new  MyClass();
                                Thread.SetData(  tlsSlot,  obj  );
                        }
                        return  (MyClass)  obj;
                }
        }

        private  static  LocalDataStoreSlot  tlsSlot  =  null;
}

public  class  MainClass
{
        private  static  void  ThreadFunc()  {
                Console.WriteLine(  "Thread  {0}  starting...",Thread.CurrentThread.GetHashCode()  );
                Console.WriteLine(  "tlsdata  for  this  thread  is  \"{0}\"",  MyClass.MyThreadDataClass  );
                Console.WriteLine(  "Thread  {0}  exiting",  Thread.CurrentThread.GetHashCode()  );
        }

        static  void  Main()  {
                Thread  thread1  =  new  Thread(  new  ThreadStart(ThreadFunc)  );
                Thread  thread2  =  new  Thread(  new  ThreadStart(ThreadFunc)  );

                thread1.Start();
                thread2.Start();
        }
}
    
   
  
   



Output

Thread 3 starting...
Creating MyClass
tlsdata for this thread is "MyClass"
Thread 3 exiting
Thread 4 starting...
Creating MyClass
tlsdata for this thread is "MyClass"
Thread 4 exiting


HTML code for linking to this page:

Follow Navioo On Twitter

C# Examples

 Navioo Thread
» LocalDataStoreSlot