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.