Sobes.tech
Junior — Middle

Quais mecanismos de sincronização de threads você conhece e pode usar nos seus projetos?

sobes.tech IA

Resposta da IA

Em C# são utilizados vários mecanismos para sincronização de threads:

  • lock — método simples para bloquear uma secção crítica do código.
  • Mutex — bloqueio entre processos, útil quando é necessário sincronizar o acesso entre diferentes processos.
  • Semaphore e SemaphoreSlim — permitem limitar o número de threads que executam uma determinada secção de código ao mesmo tempo.
  • Monitor — mecanismo mais flexível, no qual se baseia o lock.
  • ManualResetEvent e AutoResetEvent — para sinalização entre threads.
  • Coleções concorrentes do namespace System.Collections.Concurrent — fornecem acesso seguro para threads às coleções.

Exemplo de uso de lock:

private readonly object _lockObj = new object();

public void IncrementCounter()
{
    lock(_lockObj)
    {
        // Secção crítica
        counter++;
    }
}