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şındaki nesneyi 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 belirtilmemiştir.
Döndürülenler
true
bir öğe kaldırıldıysa ve başarıyla başından ConcurrentQueue<T> 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 bir 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şlemlere göre atomik olarak gerçekleşir. Kuyruk gibi q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c");
bir kodla doldurulduysa ve iki iş parçacığı aynı anda 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 öğenin sıralamasını kaldırabildikleri için döndürür true
. Her iş parçacığı ek bir öğeyi sıralamak için geri dönerse, iş parçacıklarından c
biri sırasını alır ve döndürür true
, diğer iş parçacığı ise kuyruğu boş bulur ve döndürür false
.