ExpertiDict

C# · Avançado · Inglês · Técnico

Interlocked

/ˌɪntɚˈlɑkt/substantivo

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); // 1000

Exemplos

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

Veja também

Todos os termos de C#