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

NombreRestricciones
Tcualquier tipo

Herencia

Clases base
Any ConcurrentQueue<T>

Constructores

new()
#

Propiedades

i32 Count { get; }
#

read-only

bool IsEmpty { get; }
#

read-only

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 privados e internos (2)

Mutex mutex
#

private

Queue<T> items
#

private

Miembros heredados (5)

Código fuente

ConcurrentQueue<T> en Antril, descompilado a partir de su Larva HIR.

System.Threading.ConcurrentQueue.ant
// 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;
			}
	}
}
Esc