Sponsor Reklam 


18.09.2008 (20:02)

 volatile Anahtar Sözcüğü, Keyword 
Bazı durumlarda, özellikle çok kanallı programada bu anahtar sözcüğe ihtiyaç duyulmaktadır. Bildiğimiz üzere derleyici (compiler) kod üzerinde optimizasyon yapmaktadır. İşte bazen derleyicinin optimizasyon yapmaması, yazılan kodun olduğu gibi çalışması istenmektedir.

Şu örnek incelenirse,
char KEYBOARD;
char c;
for (int i=0; i<10; i++) {
  c = KEYBOARD;
  copy(c);
}
derleyici for içinde yer alan işlemlerin değişmediğini düşünüp for'un dışına alabilir ve for'u kaldırabilir (loop invariant optimization):

char KEYBOARD;
char c;
c = KEYBOARD;
copy(c);

Oysa çok kanallı programlamalarda proseste (process) birçok thread o koda erişmek isteyecek ve kendine göre değiştirecektir. Bu nedenle
c = KEYBOARD;
satırı birçok kanaldan çağrılmak istenecek ve bir başkası bir yerlerde KEYBOARD'a atama yapabileceğinden değerler farklı olabilecek. Bu nedenle optimizasyon yapılmasını önlemek için şu şekilde tanımlama yapılmaktadır:

volatile char KEYBOARD;

Artık volatile olarak belirtilmiş KEYBOARD ile olan işlemlerde optimizasyon yapılmayacaktır.
Imza: admin








Yazilar kaynak gosterilmeden kopyalanamaz © www.kodcu.net // Twitter