Sobes.tech
Junior — Middle

O stack garante segurança ao ser utilizado em ambientes multithread?

sobes.tech IA

Resposta da IA

A pilha (Stack) em C# por padrão não é segura para múltiplos threads. Isso ocorre porque as operações push e pop não são sincronizadas, e o acesso simultâneo de vários threads pode causar condições de corrida.

Se precisar usar uma pilha em um ambiente multithread, você pode:

  • Usar a classe ConcurrentStack<T> do namespace System.Collections.Concurrent, que implementa uma pilha segura para threads.
  • Implementar sua própria sincronização usando bloqueios (lock) ao redor das operações na pilha.

Exemplo de uso do ConcurrentStack:

using System.Collections.Concurrent;

var stack = new ConcurrentStack<int>();
stack.Push(1);
if (stack.TryPop(out int result))
{
    Console.WriteLine(result);
}