O que é Interlocked em C#?
sobes.tech IA
Resposta da IA
Interlocked é uma classe no espaço de nomes System.Threading que fornece operações atômicas para variáveis que podem ser compartilhadas por vários threads. Uma operação atômica é uma operação que é garantidamente executada completamente ou não é executada, mesmo em acessos concorrentes de diferentes threads.
As principais operações atômicas fornecidas por Interlocked são:
Increment: aumenta de forma atômica o valor de uma variável do tipointoulong.Decrement: diminui de forma atômica o valor de uma variável do tipointoulong.Add: adiciona de forma atômica um valor a uma variável do tipointoulong.Exchange: substitui de forma atômica o valor de uma variável por um novo e retorna o valor anterior. É suportado para vários tipos, incluindoint,long,float,doublee tipos de referência.CompareExchange: compara de forma atômica o valor de uma variável com um valor dado. Se forem iguais, substitui o valor da variável por um novo. Retorna o valor anterior da variável. É suportado para vários tipos, incluindoint,long,float,doublee tipos de referência.
O uso de Interlocked evita problemas de competição de dados (corridas de dados), que podem ocorrer ao trabalhar com variáveis compartilhadas de diferentes threads sem bloqueios. Isso torna o código mais confiável e eficiente em cenários onde apenas o acesso atômico a uma variável é necessário, pois Interlocked geralmente evita custos associados a mutex ou bloqueios.
Exemplo de uso de Interlocked.Increment:
// Variável que será acessada por vários threads
private int _counter = 0;
public void Method1()
{
// Incremento atômico seguro de _counter
Interlocked.Increment(ref _counter);
}
public void Method2()
{
// Incremento atômico seguro de _counter
Interlocked.Increment(ref _counter);
}