Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Kelas concurrent_queue ini adalah kelas kontainer urutan yang memungkinkan akses first-in dan first-out ke elemennya. Ini memungkinkan sejumlah operasi aman konkurensi terbatas, seperti push dan try_pop. Di sini, aman secara konkurensi berarti penunjuk atau pengulang selalu valid. Ini bukan jaminan inisialisasi elemen, atau urutan traversal tertentu.
Sintaks
template<typename T, class _Ax>
class concurrent_queue: public ::Concurrency::details::_Concurrent_queue_base_v4;
Parameter
T
Jenis data elemen yang akan disimpan dalam antrean.
_Ax
Jenis yang mewakili objek alokator tersimpan yang merangkum detail tentang alokasi dan dealokasi memori untuk antrean bersamaan ini. Argumen ini bersifat opsional dan nilai defaultnya adalah allocator<T>.
Anggota
Typedef Publik
| Nama | Deskripsi |
|---|---|
allocator_type |
Jenis yang mewakili kelas alokator untuk antrean bersamaan. |
const_iterator |
Jenis yang mewakili iterator non-thread-safe const atas elemen dalam antrean konkuren. |
const_reference |
Jenis yang menyediakan referensi ke elemen const yang disimpan dalam antrean antrian bersamaan untuk tujuan membaca dan melakukan operasi const. |
difference_type |
Jenis yang menyediakan jarak yang ditandatangani antara dua elemen dalam antrean bersamaan. |
iterator |
Jenis yang mewakili iterator non-thread-safe di atas elemen dalam antrean bersamaan. |
reference |
Jenis yang menyediakan referensi ke elemen yang disimpan dalam antrean bersamaan. |
size_type |
Jenis yang menghitung jumlah elemen dalam antrean bersamaan. |
value_type |
Jenis yang mewakili tipe data yang disimpan dalam antrian konkuren. |
Konstruktor Publik
| Nama | Deskripsi |
|---|---|
| concurrent_queue | Kelebihan beban. Membuat antrean bersamaan. |
| ~concurrent_queue Destructor | Menghapus antrian bersamaan. |
Metode Publik
| Nama | Deskripsi |
|---|---|
| bersihkan | Menghapus antrean serentak dan menghancurkan elemen yang saat ini diantrekan. Metode ini tidak aman konkurensi. |
| kosong | Menguji apakah antrean bersamaan kosong saat metode ini dipanggil. Metode ini aman terhadap konkurensi. |
| get_allocator | Mengembalikan salinan alokator yang digunakan untuk membuat antrean bersamaan. Metode ini aman terhadap konkurensi. |
| push | Kelebihan beban. Mengantrikan item di akhir queue bersamaan. Metode ini aman terhadap konkurensi. |
| try_pop | Menghapus satu item dari antrean jika ada yang tersedia. Metode ini aman terhadap konkurensi. |
| unsafe_begin | Kelebihan beban. Mengembalikan iterator tipe iterator atau const_iterator ke awal antrean bersamaan. Metode ini tidak aman konkurensi. |
| akhir_tidak_aman | Kelebihan beban. Mengembalikan iterator jenis iterator atau const_iterator ke akhir antrean bersamaan. Metode ini tidak aman konkurensi. |
| unsafe_size | Mengembalikan jumlah item dalam antrean. Metode ini tidak aman konkurensi. |
Keterangan
Untuk informasi selengkapnya, lihat Kontainer dan Objek Paralel.
Hierarki Pewarisan
concurrent_queue
Persyaratan
Header: concurrent_queue.h
Namespace: konkurensi
bersihkan
Menghapus antrean serentak dan menghancurkan elemen yang saat ini diantrekan. Metode ini tidak aman konkurensi.
void clear();
concurrent_queue
Membuat antrean bersamaan.
explicit concurrent_queue(
const allocator_type& _Al = allocator_type());
concurrent_queue(
const concurrent_queue& _OtherQ,
const allocator_type& _Al = allocator_type());
concurrent_queue(
concurrent_queue&& _OtherQ,
const allocator_type& _Al = allocator_type());
template<typename _InputIterator>
concurrent_queue(_InputIterator _Begin,
_InputIterator _End);
Parameter
_InputIterator
Jenis iterator input yang menentukan rentang nilai.
_Al
Kelas alokator yang akan digunakan dengan objek ini.
_OtherQ
Objek sumber concurrent_queue untuk menyalin atau memindahkan elemen.
_Mulai
Posisi elemen pertama dalam rentang elemen yang akan disalin.
_Akhir
Posisi elemen pertama di luar rentang elemen yang akan disalin.
Keterangan
Semua konstruktor menyimpan objek _Al alokator dan menginisialisasi antrean.
Konstruktor pertama menentukan antrean awal kosong dan secara eksplisit menentukan jenis alokator yang akan digunakan.
Konstruktor kedua menentukan salinan antrean bersamaan _OtherQ.
Konstruktor ketiga menentukan pemindahan antrean konkuren _OtherQ.
Konstruktor keempat menentukan nilai yang disediakan oleh rentang iterator [ _Begin, _End).
~concurrent_queue
Menghapus antrian bersamaan.
~concurrent_queue();
kosong
Menguji apakah antrean bersamaan kosong saat metode ini dipanggil. Metode ini aman terhadap konkurensi.
bool empty() const;
Tampilkan Nilai
true jika antrian serentak kosong pada saat pemeriksaan, false jika tidak.
Keterangan
Meskipun metode ini aman dalam kebersamaan sehubungan dengan panggilan ke metode push, try_pop, dan empty, nilai yang dikembalikan mungkin salah pada saat diperiksa oleh benang pemanggil.
get_allocator
Mengembalikan salinan alokator yang digunakan untuk membuat antrean bersamaan. Metode ini aman terhadap konkurensi.
allocator_type get_allocator() const;
Tampilkan Nilai
Salinan alokator yang digunakan untuk membangun antrean bersamaan.
pendorongan
Mengantrikan item di akhir queue bersamaan. Metode ini aman terhadap konkurensi.
void push(const T& _Src);
void push(T&& _Src);
Parameter
_Src
Item yang akan ditambahkan ke antrean.
Keterangan
push aman terhadap konkurensi sehubungan dengan panggilan ke metode push, try_pop, dan empty.
try_pop
Menghapus satu item dari antrean jika ada yang tersedia. Metode ini aman terhadap konkurensi.
bool try_pop(T& _Dest);
Parameter
_Dest
Sebuah referensi ke lokasi untuk menyimpan item yang dikeluarkan dari antrean.
Tampilkan Nilai
true jika item berhasil dikeluarkan dari antrean, false jika tidak.
Keterangan
Jika item berhasil dihapus antreannya, parameter _Dest menerima nilai yang dihapus antreannya, nilai asli yang disimpan dalam antrean akan dihancurkan, dan fungsi ini mengembalikan true. Jika tidak ada item untuk dikeluarkan dari antrean, fungsi ini mengembalikan false tanpa memblokir, dan konten parameter _Dest tidak terdefinisi.
try_pop aman dalam hal konkurensi sehubungan dengan panggilan ke metode push, try_pop dan empty.
unsafe_begin
Mengembalikan iterator tipe iterator atau const_iterator ke awal antrean bersamaan. Metode ini tidak aman konkurensi.
iterator unsafe_begin();
const_iterator unsafe_begin() const;
Tampilkan Nilai
Iterator jenis iterator atau const_iterator ke awal objek antrean bersamaan.
Keterangan
Iterator pada kelas concurrent_queue terutama ditujukan untuk penelusuran kesalahan, karena lambat, serta iterasi tidak aman dalam hal konkurensi terkait operasi antrean lainnya.
akhir_tidak_aman
Mengembalikan iterator jenis iterator atau const_iterator ke akhir antrean bersamaan. Metode ini tidak aman konkurensi.
iterator unsafe_end();
const_iterator unsafe_end() const;
Tampilkan Nilai
Iterator jenis iterator atau const_iterator menuju akhir antrean serentak.
Keterangan
Iterator untuk kelas concurrent_queue terutama ditujukan untuk penelusuran kesalahan karena lambat, dan iterasi tidak aman untuk konkurensi sehubungan dengan operasi antrian lainnya.
ukuran_tidak_aman
Mengembalikan jumlah item dalam antrean. Metode ini tidak aman konkurensi.
size_type unsafe_size() const;
Tampilkan Nilai
Ukuran antrean konkuren.
Keterangan
unsafe_size tidak aman konkurensi dan dapat menghasilkan hasil yang salah jika dipanggil bersamaan dengan panggilan ke metode push, , try_popdan empty.