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
}
}