final class · System.Threading
ConcurrentQueue<T>
public final class ConcurrentQueue<T>
A queue several threads use at once (a lock around a Queue).
- Tipo
- final class
- Espacio de nombres
- System.Threading
- Ensamblado
- System.Core
- Acceso
- public, final
- Archivo fuente
Threading.ant
Parámetros de tipo
| Nombre | Restricciones |
|---|---|
T | cualquier tipo |
Herencia
- Clases base
-
AnyConcurrentQueue<T>
Constructores
new()
#
Propiedades
Métodos
Enqueue(T item)
#
TryDequeue(T fallback) : T
#
The first item, taken out; fallback when the queue is empty.
Dispose()
#
Frees what it holds (it must not be used after).
Miembros heredados (5)
GetTypemétodo de AnyUndescribedmétodo de AnyToStringmétodo de AnyHashmétodo de Anydestroymétodo de Any
Código fuente
ConcurrentQueue<T> en Antril, descompilado a partir de su Larva HIR.
// System.Threading.ConcurrentQueue — System.Core (decompiled from Larva HIR)
import System;
into namespace System.Threading
{
/// A queue several threads use at once (a lock around a Queue).
public final class ConcurrentQueue<T>
{
Mutex mutex;
Queue<T> items;
public:
new()
{
mutex = new Mutex();
items = new Queue<T>();
}
Enqueue(T item)
{
mutex.Lock();
items.Enqueue(item);
mutex.Unlock();
}
/// The first item, taken out; `fallback` when the queue is empty.
TryDequeue(T fallback) : T
{
mutex.Lock();
T item = items.Count > 0 ? items.Dequeue() : fallback;
mutex.Unlock();
return item;
}
/// Frees what it holds (it must not be used after).
Dispose()
{
mutex.Dispose();
}
i32 Count
{
get
{
mutex.Lock();
i32 n = items.Count;
mutex.Unlock();
return n;
}
}
bool IsEmpty
{
get => Count == 0;
}
}
}