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

Définition

Tente de supprimer et de renvoyer 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

Lorsque cette méthode retourne, si l’opération a réussi, result contient l’objet supprimé. Si aucun objet n’a été disponible pour être supprimé, la valeur n’est pas spécifiée.

Retours

true si un élément a été supprimé et retourné à partir du début du ConcurrentQueue<T> succès ; sinon, false.

Remarques

ConcurrentQueue<T> gère toutes les synchronisations en interne. Si deux threads appellent TryDequeue exactement le 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 q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); et deux threads essaient simultanément de mettre en file d’attente un élément, un thread se déqueue et l’autre thread se déqueue ab. Les deux appels à TryDequeue retourneront true, car ils étaient tous les deux en mesure de mettre un élément en file d’attente. Si chaque thread revient à la file d’attente d’un élément supplémentaire, l’un des threads est mis en 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