ConcurrentQueue<T>.TryDequeue(T) Yöntem

Tanım

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.

Şunlara uygulanır

Ayrıca bkz.