Bagikan melalui


ConcurrentQueue<T>.TryDequeue(T) Metode

Definisi

Mencoba menghapus dan mengembalikan objek di awal antrean bersamaan.

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

Parameter

result
T

Ketika metode ini kembali, jika operasi berhasil, result berisi objek yang dihapus. Jika tidak ada objek yang tersedia untuk dihapus, nilainya tidak ditentukan.

Mengembalikan

true jika elemen dihapus dan dikembalikan dari awal ConcurrentQueue<T> berhasil; jika tidak, false.

Keterangan

ConcurrentQueue<T> menangani semua sinkronisasi secara internal. Jika dua utas memanggil TryDequeue pada saat yang sama persis, tidak ada operasi yang diblokir. Ketika konflik terdeteksi di antara dua utas, satu utas harus mencoba lagi untuk mengambil elemen berikutnya, dan sinkronisasi ditangani secara internal.

TryDequeue mencoba menghapus elemen dari antrean. Jika metode berhasil, item dihapus dan metode mengembalikan true; jika tidak, ia mengembalikan false. Itu terjadi secara atomik sehubungan dengan operasi lain pada antrean. Jika antrean diisi dengan kode seperti q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); dan dua utas secara bersamaan mencoba menghapus antrean elemen, satu utas akan menghapus antrean a dan utas lainnya akan menghapus antrean b. Kedua panggilan ke TryDequeue akan mengembalikan true, karena keduanya dapat menghapus antrean elemen. Jika setiap utas kembali untuk menghapus antrean elemen tambahan, salah satu utas akan menghapus antrean c dan mengembalikan true, sedangkan utas lainnya akan menemukan antrean kosong dan akan mengembalikan false.

Berlaku untuk

Lihat juga