Sobes.tech
Junior — Middle

Consegue listar as principais primitivas de sincronização fornecidas pela biblioteca padrão?

sobes.tech IA

Resposta da IA

Na biblioteca padrão do C# (no espaço de nomes System.Threading) estão disponíveis as seguintes primitivas principais de sincronização:

  • lock (Monitor) — garante acesso exclusivo a um recurso, bloqueando um trecho de código.
  • Mutex — um mutex entre processos, usado para sincronização entre processos.
  • Semaphore e SemaphoreSlim — limitam o número de threads que acessam um recurso simultaneamente.
  • AutoResetEvent e ManualResetEvent — eventos para sinalização entre threads.
  • ReaderWriterLockSlim — permite que múltiplas threads leiam um recurso ao mesmo tempo, mas bloqueia a escrita.
  • SpinLock — uma primitiva leve para bloqueios curtos sem troca de contexto.

Exemplo de uso de lock:

private readonly object _lockObj = new object();

void CriticalSection()
{
    lock(_lockObj)
    {
        // código que deve ser executado por apenas um thread de cada vez
    }
}