ConcurrentQueue<T>.TryDequeue(T) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
.