ConcurrentQueue<T>.TryDequeue(T) Methode

Definitie

Probeert het object aan het begin van de gelijktijdige wachtrij te verwijderen en te retourneren.

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

Parameters

result
T

Wanneer deze methode wordt geretourneerd, bevat het object verwijderd als de bewerking is geslaagd result . Als er geen object beschikbaar was om te worden verwijderd, is de waarde niet opgegeven.

Retouren

trueals een element is verwijderd en geretourneerd vanaf het begin van het ConcurrentQueue<T> element, anders. false

Opmerkingen

ConcurrentQueue<T> verwerkt alle synchronisatie intern. Als twee threads precies op hetzelfde moment aanroepen TryDequeue , wordt geen van beide bewerkingen geblokkeerd. Wanneer er een conflict tussen twee threads wordt gedetecteerd, moet één thread het opnieuw proberen om het volgende element op te halen en wordt de synchronisatie intern verwerkt.

TryDequeue probeert een element uit de wachtrij te verwijderen. Als de methode is geslaagd, wordt het item verwijderd en wordt de methode geretourneerd true; anders wordt het geretourneerd false. Dat gebeurt atomisch met betrekking tot andere bewerkingen in de wachtrij. Als de wachtrij is gevuld met code zoals q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); en twee threads tegelijk proberen een element uit de wachtrij te verwijderen, wordt één thread uit de wachtrij a geplaatst en wordt de andere thread in de wachtrij geplaatst b. Beide aanroepen TryDequeue worden geretourneerd true, omdat ze beide een element in de wachtrij konden plaatsen. Als elke thread teruggaat naar het verwijderen van een extra element, wordt een van de threads in de wachtrij c geplaatst en geretourneerd true, terwijl de andere thread de wachtrij leeg vindt en wordt geretourneerd false.

Van toepassing op

Zie ook