۱۳۸۹/۰۶/۰۱

کلمه کلیدی volatile در C#

وقتی در هنگام برنامه نویسی می خواهیم یک متد را در یک Thread دیگر اجرا کنیم متوجه می شویم که در Thread دیگر دسترسی به منابع Thread قبلی نداریم در صورتی که که به آنها نیاز داریم و می خواهیم به آخرین مقدار آنها دسترسی داشته باشیم.

برای این منظور روش های زیادی وجود دارد ولی با استفاده از کلمه کلیدی volatile می توانید این عمل را به راحتی انجام دهید.

volatile
این کلمه کلیدی نشان می دهد که  فیلد می تواند توسط Thread  های دیگر مورد دسترسی قرار بگیرد و همچنین تضمین می کند که آخرین مقدار فیلد را به Thread ها تحویل می دهد.

این کلمه کلیدی می توان برروی انواع زیر اعمال شود
  • انواع ارجاعی
  • انواع مقداری
  • انواع اشاره گر
  • انواع Enum 
  • انواع عام از نوع Refrence
  • IntPtr و UIntPtr 
توجه کنید از این کلمه کلیدی  در تعریف متغیر های محلی نمی توان استفاده کرد.
     در مثال زیرتعریف  متغیر  myVolateText از کلمه کلیدی volatile استفاده شده ،به همین دلیل می توان در thread دوم مقدار آن را تغییر داد.

    public class VoltileExample
        {
            private static volatile string  myVolateText;
    
            static void Main()
            {
                
                myVolateText="MAIN";
                Console.WriteLine("myVolateNum value Changed in main thread to MAIN");
    
    
                Thread workerThread = new Thread(()=>
                {
                    Console.WriteLine("run separate thread...");
                    Console.WriteLine("myVolateNum value Changed in separate thread to SEPARATE.");
                    myVolateText = "SEPARATE";
                });
    
                workerThread.Start();
    
                Thread.Sleep(2000);
    
                Console.WriteLine("backed to  main thread");
                Console.WriteLine("myVolateNum value is = {0}", myVolateText );
    
                Console.WriteLine("Enjoy!");
                Console.Read();
            }
        }
    
    دریافت سورس پروژه : VoltileExample

    مستنداتvolatile در MSDN
    Vote on iDevCenter

    هیچ نظری موجود نیست:

    ارسال یک نظر