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{
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.
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:
Enviar um comentário