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

Définition

Tente de supprimer et de retourner l'objet au début de la file d'attente simultanée.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

Paramètres

result
T

Lorsque cette méthode retourne une valeur, si l'opération a réussi, result contient l'objet supprimé.When this method returns, if the operation was successful, result contains the object removed. S'il n'existait aucun objet à supprimer, la valeur n'est pas spécifiée.If no object was available to be removed, the value is unspecified.

Retours

true si un élément a bien été supprimé et retourné en partant du début de ConcurrentQueue<T> ; sinon, false.true if an element was removed and returned from the beginning of the ConcurrentQueue<T> successfully; otherwise, false.

Remarques

ConcurrentQueue<T> gère toutes les synchronisations en interne.ConcurrentQueue<T> handles all synchronization internally. Si deux threads appellent TryDequeue à un moment précis, aucune opération n’est bloquée.If two threads call TryDequeue at precisely the same moment, neither operation is blocked. Lorsqu’un conflit est détecté entre deux threads, un thread doit essayer à nouveau de récupérer l’élément suivant, et la synchronisation est gérée en interne.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 tente de supprimer un élément de la file d’attente.TryDequeue tries to remove an element from the queue. Si la méthode réussit, l’élément est supprimé et la méthode retourne true ; Sinon, elle retourne false.If the method is successful, the item is removed and the method returns true; otherwise, it returns false. Cela se produit atomiquement par rapport à d’autres opérations sur la file d’attente.That happens atomically with respect to other operations on the queue. Si la file d’attente a été remplie avec un code tel que q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); et que deux threads essaient simultanément de supprimer la file d’attente d’un élément, un thread est déplacé a et l’autre thread est déplacée 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. Les deux appels à TryDequeue retournent true, car ils ont tous deux pu supprimer la file d’attente d’un élément.Both calls to TryDequeue will return true, because they were both able to dequeue an element. Si chaque thread revient à replacer en file d’attente un élément supplémentaire, l’un des threads va supprimer la file d’attente c et retourner true, tandis que l’autre thread trouvera la file d’attente vide et renverra 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.

S’applique à

Voir aussi