Partager via


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.

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

Quand cette méthode retourne une valeur, si l'opération a réussi, result contient l'objet supprimé. S'il n'existait aucun objet à supprimer, la valeur n'est pas spécifiée.

Retours

true si un élément a bien été supprimé et retourné en partant du début de ConcurrentQueue<T> ; sinon, false.

Remarques

ConcurrentQueue<T> gère toute la synchronisation en interne. Si deux threads appellent TryDequeue exactement au même moment, aucune opération n’est bloquée. Lorsqu’un conflit est détecté entre deux threads, un thread doit réessayer pour récupérer l’élément suivant, et la synchronisation est gérée en interne.

TryDequeue tente de supprimer un élément de la file d’attente. Si la méthode réussit, l’élément est supprimé et la méthode retourne true; sinon, elle retourne false. Cela se produit atomiquement par rapport à d’autres opérations sur la file d’attente. Si la file d’attente a été remplie avec du code tel que et que q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); deux threads tentent simultanément de mettre en file d’attente un élément, un thread supprime la file d’attente a et l’autre thread supprime la file d’attente b. Les deux appels à TryDequeue retournent true, car ils ont tous deux pu mettre un élément en file d’attente. Si chaque thread retourne à la file d’attente un élément supplémentaire, l’un des threads supprime la file d’attente c et retourne true, tandis que l’autre thread trouve la file d’attente vide et retourne false.

S’applique à

Voir aussi