Comparteix a través de


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

Definición

Intenta quitar y devolver el objeto situado 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 un valor, si la operación se realizó correctamente, result contiene el objeto que se ha quitado. Si no había ningún objeto para quitar, el valor estará sin especificar.

Devoluciones

Es true si se quitó y se devolvió correctamente el elemento situado al principio de ConcurrentQueue<T>; en caso contrario, es false.

Comentarios

ConcurrentQueue<T> controla toda la sincronización internamente. Si dos subprocesos llaman TryDequeue exactamente al mismo momento, ninguna operación se bloquea. Cuando se detecta un conflicto entre dos subprocesos, un subproceso tiene que volver a intentar recuperar el siguiente elemento 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 quitar de la cola un elemento, un subproceso se quitará a de la cola y el otro subproceso quitará de la cola b. Ambas llamadas a TryDequeue devolverán true, porque ambos pudieron quitar de la cola un elemento. Si cada subproceso vuelve a quitar de la cola un elemento adicional, uno de los subprocesos desqueará c y devolverá true, mientras que el otro subproceso encontrará la cola vacía y devolverá false.

Se aplica a

Consulte también