ConcurrentQueue<T>.TryDequeue(T) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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.