ConcurrentStack
并发堆栈(ConcurrentStack<T>
)是线程安全的后进先出(LIFO
)的集合。
特点
- 线程安全
- 后进先出(Last in, First out)
定义它
private static readonly ConcurrentStack<string> _stack = new ConcurrentStack<string>();
基本使用
// 在顶部插入一个对象
_stack.Push("first");
_stack.Push("second");
// 如果顶部有对象就返回,但不删除对象
_stack.TryPeek(out var result0);
Console.WriteLine(result0);
// 如果顶部有对象就返回,同时删除对象
_stack.TryPop(out var result1);
Console.WriteLine(result1);
// 如果顶部有对象就返回,同时删除对象
_stack.TryPop(out var result2);
Console.WriteLine(result2);
// 如果顶部没有对象,就返回空
_stack.TryPop(out var result3);
Console.WriteLine(result3);
ConcurrentQueue
并发队列(ConcurrentQueue<T>
)是线程安全的先进先出(FIFO
)的集合。
特点
- 线程安全
- 先进先出(First Input, First Output)
定义它
private static readonly ConcurrentQueue<string> _queue = new ConcurrentQueue<string>();
基本使用
// 在末尾添加一个对象
_queue.Enqueue("first");
_queue.Enqueue("second");
// 尝试拿出开头的对象,但不移除对象
_queue.TryPeek(out var result3);
Console.WriteLine(result3);
// 尝试拿出开头的对象,同时删除对象
_queue.TryDequeue(out var result4);
Console.WriteLine(result4);
// 尝试拿出开头的对象,同时删除对象
_queue.TryDequeue(out var result5);
Console.WriteLine(result5);
// 尝试拿出开头的对象,没有可拿的就返回空
_queue.TryDequeue(out var result6);
Console.WriteLine(result6);