وقتی در هنگام برنامه نویسی می خواهیم یک متد را در یک Thread دیگر اجرا کنیم متوجه می شویم که در Thread دیگر دسترسی به منابع Thread قبلی نداریم در صورتی که که به آنها نیاز داریم و می خواهیم به آخرین مقدار آنها دسترسی داشته باشیم.
برای این منظور روش های زیادی وجود دارد ولی با استفاده از کلمه کلیدی volatile می توانید این عمل را به راحتی انجام دهید.
volatile
این کلمه کلیدی نشان می دهد که فیلد می تواند توسط Thread های دیگر مورد دسترسی قرار بگیرد و همچنین تضمین می کند که آخرین مقدار فیلد را به 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(); } }
مستندات
volatile در MSDN
هیچ نظری موجود نیست:
ارسال یک نظر