Junior — Middle
Does the stack ensure safety when used in a multithreaded environment?
sobes.tech AI
Answer from AI
The stack in C# is not thread-safe by default. This is because push and pop operations are not synchronized, and concurrent access from multiple threads can lead to a race condition.
If you need to use a stack in a multithreaded environment, you can:
- Use the ConcurrentStack<T> class from the
System.Collections.Concurrentnamespace, which implements a thread-safe stack. - Implement your own synchronization using locks (
lock) around stack operations.
Example of using ConcurrentStack:
using System.Collections.Concurrent;
var stack = new ConcurrentStack<int>();
stack.Push(1);
if (stack.TryPop(out int result))
{
Console.WriteLine(result);
}