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