sexta-feira, 11 de janeiro de 2008

Palavra reservada " volatile "

A palavra reservada volatile indica que um campo pode ser modificado no programa por algo como o sistema operativo, o hardware, ou uma thread em concorrência.

O sistema lê sempre o valor corrente de um objecto volatile no ponto em que ele é pretendido, mesmo se a instrução anterior tenha requerido o mesmo objecto. o valor do objecto é escrito imediatamente na tarefa. O modificador volatile é normalmente usado para um campo que é acedido por múltiplas threads sem o uso da instrução lock para serializar o acesso.
Usar o modificador volatile assegura que uma thread retorna o valor mais actual escrito por outra thread.

Exemplo em C#:

public class VolatileExemplo{

private volatile int valor;

public int get(){ return valor;}

public void set(int v){ valor=v; }
}

Como neste caso o problema é apenas de visibilidade basta colocar o campo valor como volatile e assim é garantida a leitura do valor up-to-date.

Sem comentários: