ConcurrentQueue<T>.TryDequeue(T) Método

Definición

Intenta quitar y devolver el objeto al principio de la cola simultánea.

public:
 bool TryDequeue([Runtime::InteropServices::Out] T % result);
public bool TryDequeue(out T result);
member this.TryDequeue : 'T -> bool
Public Function TryDequeue (ByRef result As T) As Boolean

Parámetros

result
T

Cuando este método devuelve, si la operación se realizó correctamente, result contiene el objeto quitado. Si no hay ningún objeto disponible para quitarse, el valor no se especifica.

Devoluciones

true es si se quitó un elemento y se devolvió desde el principio de ConcurrentQueue<T> correctamente; de lo contrario, false.

Comentarios

ConcurrentQueue<T> controla toda la sincronización internamente. Si dos subprocesos llaman TryDequeue exactamente al mismo momento, no se bloquea ninguna operación. Cuando se detecta un conflicto entre dos subprocesos, un subproceso debe intentarlo de nuevo para recuperar el elemento siguiente y la sincronización se controla internamente.

TryDequeue intenta quitar un elemento de la cola. Si el método se ejecuta correctamente, el elemento se quita y el método devuelve true; de lo contrario, devuelve false. Esto sucede de forma atómica con respecto a otras operaciones de la cola. Si la cola se ha rellenado con código como q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); y dos subprocesos al mismo tiempo intentan desen colar un elemento, un subproceso desqueuerá a y el otro subproceso desqueuerá b. Ambas llamadas a TryDequeue devolverán true, porque ambos pudieron poner en cola un elemento. Si cada subproceso vuelve a descuar un elemento adicional, uno de los subprocesos desconeará c y devolverá true, mientras que el otro subproceso encontrará la cola vacía y devolverá false.

Se aplica a

Consulte también