ConcurrentQueue<T>.TryDequeue(T) Metoda

Definice

Pokusí se odebrat a vrátit objekt na začátku souběžné fronty.

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

Parametry

result
T

Pokud tato metoda vrátí, pokud operace byla úspěšná, result obsahuje objekt odebrán. Pokud nebyl k dispozici žádný objekt, který by bylo možné odebrat, hodnota není zadána.

Návraty

true pokud byl prvek odebrán a vrácen od začátku ConcurrentQueue<T> úspěšně; jinak , false.

Poznámky

ConcurrentQueue<T> zpracovává veškerou synchronizaci interně. Pokud dvě vlákna volají TryDequeue přesně ve stejný okamžik, žádná operace není blokována. Když se zjistí konflikt mezi dvěma vlákny, musí se jedno vlákno pokusit znovu načíst další prvek a synchronizace se zpracuje interně.

TryDequeue se pokusí odebrat prvek z fronty. Pokud je metoda úspěšná, položka je odebrána a metoda vrátí true; v opačném případě vrátí false. To se děje atomicky s ohledem na jiné operace ve frontě. Pokud se fronta naplnila kódem, například q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); a dvěma vlákny současně, pokusí se dequeue elementu, jedno vlákno dequeue a a druhé vlákno dequeue b. Obě volání, která se TryDequeue mají vrátit true, protože oba byli schopni odložit prvek. Pokud se každé vlákno vrátí zpět k vyřazení dalšího prvku, jeden z vláken se dequeue c a vrátí true, zatímco druhé vlákno najde frontu prázdnou a vrátí false.

Platí pro

Viz také