Sobes.tech
Junior — Middle

Que métodos utilizou para garantir a segurança dos threads ao executar tarefas simultaneamente?

sobes.tech IA

Resposta da IA

Para garantir a operação segura de threads ao executar tarefas simultâneas em C#, são utilizados vários mecanismos de sincronização e controlo de acesso a recursos partilhados:

  • lock — bloqueio da secção crítica do código, para que apenas um thread possa executá-la de cada vez.
  • Mutex — bloqueio entre processos, útil ao trabalhar com recursos acessíveis a partir de diferentes processos.
  • Semaphore e SemaphoreSlim — limitam o número de threads que podem aceder a um recurso ao mesmo tempo.
  • Monitor — mecanismo de bloqueio mais flexível, que permite esperar e sinalizar eventos.
  • Coleções concorrentes (por exemplo, ConcurrentDictionary, ConcurrentQueue) — fornecem acesso seguro por threads às coleções.
  • Interlocked — operações atômicas sobre variáveis para evitar condições de corrida.

Exemplo de uso de lock:

private readonly object _lockObj = new object();
private int _counter = 0;

public void Increment()
{
    lock(_lockObj)
    {
        _counter++;
    }
}

Esta abordagem impede alterações simultâneas em _counter por diferentes threads, evitando condições de corrida e garantindo a integridade dos dados.