ConcurrentQueue<T>.TryDequeue(T) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
.