Volatile anahtar kelimesi ile bir alanın peş peşe çalışan iş parçacıkları (thread) tarafından değiştirilebileceği belirtilir. Volatile tanımlanan alanlar, sadece tek bir iş parçacığının eriştiğini kabul eden derleyici iyileştirmelerinden (compiler optimizations) hariç tutulurlar.
Volatile kelimesi çoklu iş parçacıkları tarafından lock ifadesi kullanılmadan erişilecek alanlara erişimi serileştirmek, sıraya sokmak (serialize) için kullanılır…
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4
5 using System.Threading;
6
7 namespace Volatile_Keyword
8 {
9 class Program
10 {
11 public static int result;
12 public static volatile bool finished;
13
14 static void Thread2()
15 {
16 result = 143;
17 finished = true;
18 }
19
20 static void Main(string[] args)
21 {
22 finished = false;
23 // Thread2() metodunu yeni bir threadde çalıştır.
24 new Thread(new ThreadStart(Thread2)).Start();
25 // Thread2 nin bir sonuç bulduğunu finished değerini true olarak ayarlarak belirtmesini bekle
26 for (; ; )
27 {
28 if (finished)
29 {
30 Console.WriteLine("Sonuç = {0}", result);
31 return;
32 }
33 else
34 {
35 Console.WriteLine("Bekle…");
36 }
37 }
38 }
39 }
40 }
Görüldüğü gibi yukardaki örnekte volatile ile tanımlanmış boolen alan bir thread içinde değiştiriliyor…
Klavyeleriniz şen ola…