ConcurrentQueue<T>.TryDequeue(T) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Eşzamanlı kuyruğun başında nesnesini kaldırmaya ve döndürmeye çalışır.
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
Parametreler
- result
- T
Bu yöntem döndürdüğünde, işlem başarılı olursa, result kaldırılan nesneyi içerir. Kaldırılacak nesne yoksa değer belirtilmez.
Döndürülenler
true bir öğe kaldırıldıysa ve öğesinin başından ConcurrentQueue<T> başarıyla döndürüldüyse; aksi takdirde, false.
Açıklamalar
ConcurrentQueue<T> tüm eşitlemeyi dahili olarak işler. İki iş parçacığı tam olarak aynı anda çağırırsa TryDequeue , hiçbir işlem engellenmez. İki iş parçacığı arasında çakışma algılandığında, bir iş parçacığının sonraki öğeyi almak için yeniden denemesi gerekir ve eşitleme dahili olarak işlenir.
TryDequeue bir öğeyi kuyruktan kaldırmaya çalışır. Yöntem başarılı olursa, öğe kaldırılır ve yöntem döndürür true; aksi takdirde döndürür false. Bu, kuyruk üzerindeki diğer işlemler açısından atomik olarak gerçekleşir. Kuyruk gibi q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); bir kodla doldurulmuşsa ve aynı anda iki iş parçacığı bir öğenin sırasını kaldırmayı denerse, bir iş parçacığının sırası a kaldırılır ve diğer iş parçacığı da dizisini bçıkarır. her iki çağrı TryDequeue da bir öğeyi sıralayabildiği için döndürür true. Her iş parçacığı bir ek öğenin sırasını kaldırmaya geri dönerse, iş parçacıklarından biri sırayı c kaldırıp döndürürken true, diğer iş parçacığı kuyruğu boş bulur ve döndürür false.