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 zurückgegeben wird, wenn der Vorgang erfolgreich war, result enthält das Objekt entfernt. Wenn kein Objekt entfernt werden kann, ist der Wert nicht angegeben.

Gibt zurück

true wenn ein Element entfernt und vom Anfang des ConcurrentQueue<T> Erfolgreichen zurückgegeben wurde; andernfalls false.

Hinweise

ConcurrentQueue<T> behandelt alle Synchronisierungen intern. Wenn zwei Threads genau im selben Moment aufgerufen werden TryDequeue , wird keine operation 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 zurückgegeben true; andernfalls wird sie zurückgegeben false. Dies geschieht atomisch in Bezug auf andere Vorgänge in der Warteschlange. Wenn die Warteschlange mit Code gefüllt wurde, z q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); . B. und zwei Threads gleichzeitig versuchen, ein Element zu dequeue, wird ein Thread dequeue a und der andere Thread wird dequeue b. Beide Aufrufe werden TryDequeue zurückgegeben true, da beide ein Element dequeue konnten. Wenn jeder Thread zu einem zusätzlichen Element zurückgeht, wird eines der Threads dequeue c und zurückgegeben true, während der andere Thread die Warteschlange leer findet und zurückgibt false.

Gilt für:

Weitere Informationen