C# · Avançado · Inglês · Técnico
Interlocked
Classe estática com operações atômicas sobre variáveis compartilhadas, como Increment, Add e CompareExchange, implementadas com instruções do processador e sem lock.
Onde usar
Aparece em contadores e flags acessados por várias threads, onde um lock seria pesado demais. Um simples total++ não é atômico e perde incrementos sob concorrência.
Em código
int total = 0;
Parallel.For(0, 1000, _ =>
Interlocked.Increment(ref total));
Console.WriteLine(total); // 1000Exemplos
Use Interlocked.Increment instead of a lock for the counter.
Use Interlocked.Increment em vez de lock para o contador.
A plain total++ loses updates across threads.
Um total++ simples perde atualizações entre threads.
Cuidado
Não use para proteger vários campos ao mesmo tempo: cada chamada é atômica sozinha, mas a sequência não é.
Sinônimos
operação atômica