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

Definición

Intenta quitar y devolver el objeto situado al principio de la cola simultánea.Tries to remove and return the object at the beginning of the concurrent queue.

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.When this method returns, if the operation was successful, result contains the object removed. Si no había ningún objeto para quitar, el valor estará sin especificar.If no object was available to be removed, the value is unspecified.

Devoluciones

true si se quitó y se devolvió correctamente el elemento situado al principio de ConcurrentQueue<T>; de lo contrario, es false.true if an element was removed and returned from the beginning of the ConcurrentQueue<T> successfully; otherwise, false.

Comentarios

ConcurrentQueue<T> controla toda la sincronización internamente.ConcurrentQueue<T> handles all synchronization internally. Si dos subprocesos llaman a TryDequeue exactamente en el mismo momento, no se bloquea ninguna operación.If two threads call TryDequeue at precisely the same moment, neither operation is blocked. 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.When a conflict is detected between two threads, one thread has to try again to retrieve the next element, and the synchronization is handled internally.

TryDequeue intenta quitar un elemento de la cola.TryDequeue tries to remove an element from the queue. Si el método se realiza correctamente, se quita el elemento y el método devuelve true; de lo contrario, devuelve false.If the method is successful, the item is removed and the method returns true; otherwise, it returns false. Eso sucede de forma atómica con respecto a otras operaciones en la cola.That happens atomically with respect to other operations on the queue. Si la cola se ha rellenado con código como q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); y dos subprocesos intentan quitar la cola simultáneamente un elemento, un subproceso eliminará la cola a y el otro subproceso desaqueue b.If the queue was populated with code such as q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); and two threads concurrently try to dequeue an element, one thread will dequeue a and the other thread will dequeue b. Las dos llamadas a TryDequeue devolverán true, porque ambos podían quitar de la cola un elemento.Both calls to TryDequeue will return true, because they were both able to dequeue an element. Si cada subproceso vuelve a quitar de la cola un elemento adicional, uno de los subprocesos eliminará la cola c y devolverá true, mientras que el otro subproceso encontrará la cola vacía y devolverá false.If each thread goes back to dequeue an additional element, one of the threads will dequeue c and return true, whereas the other thread will find the queue empty and will return false.

Se aplica a

Consulte también: