c# ConcurrentQueue 有哪些方法
时间: 2024-09-28 18:03:47 浏览: 64
c#高效的线程安全队列ConcurrentQueueT的实现
`ConcurrentQueue<T>` 是 C# 中的一个内置并发队列,它提供了一种线程安全的方式来存储和处理元素。以下是 `ConcurrentQueue<T>` 主要的一些常用方法:
1. **Enqueue**: 向队列的末尾添加一个元素。这个操作是原子性的,不会阻塞其他线程。
```csharp
void Enqueue(T item);
```
2. **Dequeue**: 从队列头部移除并返回一个元素。如果队列为空,该操作会阻塞等待元素的到来。若队列已空且有新的元素加入,则会唤醒等待的线程。
```csharp
T Dequeue();
```
3. **TryDequeue**: 尝试从队列头部移除并返回一个元素。如果没有元素可用,将直接返回默认值(如 `default(T)`),并且不会阻塞。
```csharp
bool TryDequeue(out T item);
```
4. **Count**: 返回队列中当前元素的数量。
```csharp
int Count { get; }
```
5. **Peek**: 查看队列头部的元素,但不移除。同样不会阻塞。
```csharp
T Peek();
```
6. **Clear**: 清空整个队列,这是一项非阻塞操作。
```csharp
void Clear();
```
7. **IsEmpty**: 检查队列是否为空。
```csharp
bool IsEmpty();
```
8. **ToArray**: 转换为普通数组,可能会导致阻塞直到所有数据都被收集到数组中。
```csharp
T[] ToArray();
```
9. **GetEnumerator**: 获取一个 `IEnumerator<T>` 对象,用于遍历队列元素。注意这个迭代器不是线程安全的,通常用于顺序访问。
阅读全文