Freigeben über


ConcurrentQueue<T>.TryDequeue(T) Methode

Definition

Versucht, das Objekt am Anfang der gleichzeitigen Warteschlange zu entfernen und zurückzugeben.

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

Parameter

result
T

Wenn diese Methode beendet wird und der Vorgang erfolgreich war, enthält result das entfernte Objekt. Wenn kein Objekt zum Entfernen verfügbar war, ist der Wert nicht angegeben.

Gibt zurück

true, wenn ein Element vom Anfang der ConcurrentQueue<T> erfolgreich entfernt und zurückgegeben wurde, andernfalls false.

Hinweise

ConcurrentQueue<T> verarbeitet die gesamte Synchronisierung intern. Wenn zwei Threads genau im selben Moment aufrufen TryDequeue , wird kein Vorgang blockiert. Wenn ein Konflikt zwischen zwei Threads erkannt wird, muss ein Thread erneut versuchen, das nächste Element abzurufen, und die Synchronisierung wird intern behandelt.

TryDequeue versucht, ein Element aus der Warteschlange zu entfernen. Wenn die Methode erfolgreich ist, wird das Element entfernt, und die -Methode gibt zurück true. Andernfalls wird zurückgegeben false. Dies geschieht atomar in Bezug auf andere Vorgänge in der Warteschlange. Wenn die Warteschlange mit Code wie q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); aufgefüllt wurde und zwei Threads gleichzeitig versuchen, ein Element zu entfernen, wird ein Thread dequeuet a , und der andere Thread wird dequeue b. Beide Aufrufe von TryDequeue geben zurück true, da beide ein Element dequedieren konnten. Wenn jeder Thread zurückgeht, um ein zusätzliches Element zu löschen, wird einer der Threads dequeue c und zurückgesendet true, während der andere Thread die Warteschlange leer findet und zurückgibt false.

Gilt für:

Weitere Informationen