ConcurrentQueue<T>.TryDequeue(T) Methode

Definition

Versucht, das Objekt am Anfang der gleichzeitigen Warteschlange zu entfernen und zurückzugeben.Tries to remove and return the object at the beginning of the concurrent queue.

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.When this method returns, if the operation was successful, result contains the object removed. Wenn kein Objekt zum Entfernen verfügbar war, ist der Wert nicht angegeben.If no object was available to be removed, the value is unspecified.

Gibt zurück

Boolean

true, wenn ein Element vom Anfang der ConcurrentQueue<T> erfolgreich entfernt und zurückgegeben wurde, andernfalls false.true if an element was removed and returned from the beginning of the ConcurrentQueue<T> successfully; otherwise, false.

Hinweise

ConcurrentQueue<T> verarbeitet die gesamte Synchronisierung intern.ConcurrentQueue<T> handles all synchronization internally. Wenn zwei Threads TryDequeue genau denselben Zeitpunkt aufzurufen, wird keiner der Vorgänge blockiert.If two threads call TryDequeue at precisely the same moment, neither operation is blocked. Wenn ein Konflikt zwischen zwei Threads erkannt wird, muss ein Thread erneut versuchen, das nächste Element abzurufen, und die Synchronisierung wird intern verarbeitet.When a conflict is detected between two threads, one thread has to try again to retrieve the next element, and the synchronization is handled internally.

TryDequeue versucht, ein Element aus der Warteschlange zu entfernen.TryDequeue tries to remove an element from the queue. Wenn die Methode erfolgreich ist, wird das Element entfernt, und die Methode gibt zurück true , andernfalls wird zurückgegeben false .If the method is successful, the item is removed and the method returns true; otherwise, it returns false. Dies geschieht atomisch in Bezug auf andere Vorgänge in der Warteschlange.That happens atomically with respect to other operations on the queue. Wenn die Warteschlange mit Code (z. b.) aufgefüllt wurde q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); und zwei Threads gleichzeitig versuchen, ein Element aus der Warteschlange zu entfernen, wird ein Thread aus der Warteschlange entfernen a bIf the queue was populated with code such as q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); and two threads concurrently try to dequeue an element, one thread will dequeue a and the other thread will dequeue b. Beide Aufrufe von TryDequeue geben zurück true , da Sie beide in der Lage waren, ein Element aus der Warteschlange zu entfernen.Both calls to TryDequeue will return true, because they were both able to dequeue an element. Wenn jeder Thread zurück zum Entfernen eines zusätzlichen Elements aus der Warteschlange wechselt, wird einer der Threads in die Warteschlange eingereiht c und zurückgegeben true , während der andere Thread die Warteschlange leer findet und zurückgibt false .If each thread goes back to dequeue an additional element, one of the threads will dequeue c and return true, whereas the other thread will find the queue empty and will return false.

Gilt für:

Siehe auch