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.
Menjelaskan objek yang melakukan atomic operasi pada nilai jenis Tytersimpan .
Sintaks
template <class Ty>
struct atomic;
Anggota
| Anggota | Deskripsi |
|---|---|
| Pembangun | |
atomic |
Membuat objek atom. |
| Operator | |
atomic::operator Ty |
Membaca dan mengembalikan nilai tersimpan. Aku akan menemuinya.atomic::load |
atomic::operator= |
Menggunakan nilai yang ditentukan untuk menggantikan nilai yang disimpan. Aku akan menemuinya.atomic::store |
atomic::operator++ |
Menaikkan nilai yang disimpan. Hanya digunakan oleh spesialisasi integral dan pointer. |
atomic::operator+= |
Menambahkan nilai yang ditentukan ke nilai tersimpan. Hanya digunakan oleh spesialisasi integral dan pointer. |
atomic::operator-- |
Mengurangi nilai tersimpan. Hanya digunakan oleh spesialisasi integral dan pointer. |
atomic::operator-= |
Mengurangi nilai yang ditentukan dari nilai yang disimpan. Hanya digunakan oleh spesialisasi integral dan pointer. |
atomic::operator&= |
Melakukan bitwise "dan" (&) pada nilai tertentu dan nilai tersimpan. Hanya digunakan oleh spesialisasi integral. |
atomic::operator|= |
Melakukan bitwise "atau" (|) pada nilai tertentu dan nilai tersimpan. Hanya digunakan oleh spesialisasi integral. |
atomic::operator^= |
Melakukan bitwise "eksklusif atau" (^) pada nilai tertentu dan nilai tersimpan. Hanya digunakan oleh spesialisasi integral. |
| Fungsi | |
compare_exchange_strong |
atomic_compare_and_exchange Melakukan operasi pada this dan mengembalikan hasilnya. |
compare_exchange_weak |
weak_atomic_compare_and_exchange Melakukan operasi pada this dan mengembalikan hasilnya. |
fetch_add |
Menambahkan nilai yang ditentukan ke nilai tersimpan. |
fetch_and |
Melakukan bitwise "dan" (&) pada nilai tertentu dan nilai tersimpan. |
fetch_or |
Melakukan bitwise "atau" (|) pada nilai tertentu dan nilai tersimpan. |
fetch_sub |
Mengurangi nilai yang ditentukan dari nilai yang disimpan. |
fetch_xor |
Melakukan bitwise "eksklusif atau" (^) pada nilai tertentu dan nilai tersimpan. |
is_lock_free |
Menentukan apakah atomic operasi aktif this bebas kunci. Jenis atomic dikunci bebas jika tidak ada atomic operasi pada jenis tersebut yang menggunakan kunci. |
load |
Membaca dan mengembalikan nilai tersimpan. |
store |
Menggunakan nilai yang ditentukan untuk menggantikan nilai yang disimpan. |
Keterangan
Jenis Ty harus dapat disalin secara sepele. Artinya, menggunakan memcpy untuk menyalin byte-nya harus menghasilkan objek yang valid Ty yang dibandingkan dengan objek asli. Fungsi compare_exchange_weak anggota dan compare_exchange_strong digunakan memcmp untuk menentukan apakah dua Ty nilai sama. Fungsi-fungsi ini tidak akan menggunakan Ty.operator== Fungsi anggota penggunaan atomic memcpy untuk menyalin nilai jenis Ty.
Spesialisasi parsial, atomic<Ty*>, ada untuk semua jenis penunjuk. Spesialisasi memungkinkan penambahan offset ke nilai pointer terkelola atau pengurangan offset darinya. Operasi aritmatika mengambil argumen jenis ptrdiff_t dan menyesuaikan argumen tersebut sesuai dengan ukuran Ty agar konsisten dengan aritmatika alamat biasa.
Spesialisasi ada untuk setiap jenis integral kecuali bool. Setiap spesialisasi menyediakan serangkaian metode yang kaya untuk operasi aritmatika dan logis atom.
atomic<char>
atomic<signed char>
atomic<unsigned char>
atomic<char16_t>
atomic<char32_t>
atomic<wchar_t>
atomic<short>
atomic<unsigned short>
atomic<int>
atomic<unsigned int>
atomic<long>
atomic<unsigned long>
atomic<long long>
atomic<unsigned long long>
Spesialisasi integral berasal dari jenis yang atomic_integral sesuai. Misalnya, atomic<unsigned int> berasal dari atomic_uint.
Persyaratan
Header: <atomic>
kumpulan nama XML: std
atomic::atomic
Membuat objek atom.
atomic();
atomic( const atomic& );
atomic( Ty Value ) noexcept;
Parameter
Value
Nilai inisialisasi.
Keterangan
Objek atom tidak dapat disalin atau dipindahkan.
Objek yang merupakan instansiasi hanya dapat diinisialisasi oleh konstruktor yang mengambil argumen jenis Ty dan bukan dengan menggunakan inisialisasi atomic<Ty> agregat. Namun, atomic_integral objek hanya dapat diinisialisasi dengan menggunakan inisialisasi agregat.
atomic<int> ai0 = ATOMIC_VAR_INIT(0);
atomic<int> ai1(0);
atomic::operator Ty
Operator untuk jenis yang ditentukan ke templat, atomic<Ty>. Mengambil nilai tersimpan di *this.
atomic<Ty>::operator Ty() const volatile noexcept;
atomic<Ty>::operator Ty() const noexcept;
Keterangan
Operator ini menerapkan memory_order_seq_cst memory_order.
atomic::operator=
Menyimpan nilai tertentu.
Ty operator=(
Ty Value
) volatile noexcept;
Ty operator=(
Ty Value
) noexcept;
Parameter
Value
Objek Ty.
Tampilkan Nilai
Menampilkan Value.
atomic::operator++
Menaikkan nilai yang disimpan. Hanya digunakan oleh spesialisasi integral dan pointer.
Ty atomic<Ty>::operator++(int) volatile noexcept;
Ty atomic<Ty>::operator++(int) noexcept;
Ty atomic<Ty>::operator++() volatile noexcept;
Ty atomic<Ty>::operator++() noexcept;
Tampilkan Nilai
Dua operator pertama mengembalikan nilai yang dinaikkan; dua operator terakhir mengembalikan nilai sebelum kenaikan. Operator menggunakan memory_order_seq_cst memory_order.
atomic::operator+=
Menambahkan nilai yang ditentukan ke nilai tersimpan. Hanya digunakan oleh spesialisasi integral dan pointer.
Ty atomic<Ty>::operator+=(
Ty Value
) volatile noexcept;
Ty atomic<Ty>::operator+=(
Ty Value
) noexcept;
Parameter
Value
Nilai integral atau pointer.
Tampilkan Nilai
Objek Ty yang berisi hasil penambahan.
Keterangan
Operator ini menggunakan memory_order_seq_cst memory_order.
atomic::operator--
Mengurangi nilai tersimpan. Hanya digunakan oleh spesialisasi integral dan pointer.
Ty atomic<Ty>::operator--(int) volatile noexcept;
Ty atomic<Ty>::operator--(int) noexcept;
Ty atomic<Ty>::operator--() volatile noexcept;
Ty atomic<Ty>::operator--() noexcept;
Tampilkan Nilai
Dua operator pertama mengembalikan nilai yang direkrementasi; dua operator terakhir mengembalikan nilai sebelum penurunan. Operator menggunakan memory_order_seq_cst memory_order.
atomic::operator-=
Mengurangi nilai yang ditentukan dari nilai yang disimpan. Hanya digunakan oleh spesialisasi integral dan pointer.
Ty atomic<Ty>::operator-=(
Ty Value
) volatile noexcept;
Ty atomic<Ty>::operator-=(
Ty Value
) noexcept;
Parameter
Value
Nilai integral atau pointer.
Tampilkan Nilai
Objek Ty yang berisi hasil pengurangan.
Keterangan
Operator ini menggunakan memory_order_seq_cst memory_order.
atomic::operator&=
Melakukan bitwise "dan" (&) pada nilai tertentu dan nilai tersimpan dari *this. Hanya digunakan oleh spesialisasi integral.
atomic<Ty>::operator&= (
Ty Value
) volatile noexcept;
atomic<Ty>::operator&= (
Ty Value
) noexcept;
Parameter
Value
Nilai jenis Ty.
Tampilkan Nilai
Hasil bitwise "dan" (&).
Keterangan
Operator ini melakukan operasi baca-ubah-tulis untuk mengganti nilai tersimpan *this dengan bitwise "dan" (&) dari Value dan nilai saat ini yang disimpan di , dalam *thisbatasan memory_order_seq_cst memory_order.
atomic::operator|=
Melakukan bitwise "atau" (|) pada nilai tertentu dan nilai tersimpan dari *this. Hanya digunakan oleh spesialisasi integral.
atomic<Ty>::operator|= (
Ty Value
) volatile noexcept;
atomic<Ty>::operator|= (
Ty Value
) noexcept;
Parameter
Value
Nilai jenis Ty.
Tampilkan Nilai
Hasil bitwise "atau" (|).
Keterangan
Operator ini melakukan operasi baca-ubah-tulis untuk mengganti nilai tersimpan *this dengan bitwise "atau" (|) dari Value dan nilai saat ini yang disimpan di , dalam *thisbatasan batasan memory_order_seq_cst memory_order .
atomic::operator^=
Melakukan bitwise "eksklusif atau" (^) pada nilai tertentu dan nilai tersimpan dari *this. Hanya digunakan oleh spesialisasi integral.
atomic<Ty>::operator^= (
Ty Value
) volatile noexcept;
atomic<Ty>::operator^= (
Ty Value
) noexcept;
Parameter
Value
Nilai jenis Ty.
Tampilkan Nilai
Hasil bitwise "eksklusif atau" (^).
Keterangan
Operator ini melakukan operasi baca-ubah-tulis untuk mengganti nilai tersimpan *this dengan bitwise "eksklusif atau" (^) dan Value nilai saat ini yang disimpan di , dalam *thisbatasan batasan memory_order_seq_cst memory_order .
atomic::compare_exchange_strong
Melakukan operasi perbandingan dan pertukaran atomik pada *this.
bool compare_exchange_strong(
Ty& Exp,
Ty Value,
memory_order Order1,
memory_order Order2
) volatile noexcept;
bool compare_exchange_strong(
Ty& Exp,
Ty Value,
memory_order Order1,
memory_order Order2
) noexcept;
bool compare_exchange_strong(
Ty& Exp,
Ty Value,
memory_order Order1 = memory_order_seq_cst
) volatile noexcept;
bool compare_exchange_strong(
Ty& Exp,
Ty Value,
memory_order Order1 = memory_order_seq_cst
) noexcept;
Parameter
Exp
Nilai jenis Ty.
Value
Nilai jenis Ty.
Order1
Argumen pertama memory_order .
Order2
Argumen kedua memory_order .
Tampilkan Nilai
bool yang menunjukkan hasil perbandingan nilai.
Keterangan
Operasi perbandingan dan pertukaran atom ini membandingkan nilai yang disimpan dengan *this Exp. Jika nilainya sama, operasi menggantikan nilai yang disimpan *this dengan menggunakan Value operasi baca-ubah-tulis dan menerapkan batasan urutan memori yang ditentukan oleh Order1. Jika nilainya tidak sama, operasi menggunakan nilai yang disimpan untuk *this menggantikan Exp dan menerapkan batasan urutan memori yang ditentukan oleh Order2.
Kelebihan beban yang tidak memiliki kedua memory_order menggunakan implisit Order2 yang didasarkan pada nilai Order1. Jika Order1 adalah memory_order_acq_rel, Order2 adalah memory_order_acquire. Jika Order1 adalah memory_order_release, Order2 adalah memory_order_relaxed. Dalam semua kasus lain, Order2 sama dengan Order1.
Untuk kelebihan beban yang mengambil dua memory_order parameter, nilai Order2 tidak boleh memory_order_release atau memory_order_acq_rel, dan tidak boleh lebih kuat dari nilai Order1.
atomic::compare_exchange_weak
Melakukan operasi perbandingan dan pertukaran atom yang lemah pada *this.
bool compare_exchange_weak(
Ty& Exp,
Ty Value,
memory_order Order1,
memory_order Order2
) volatile noexcept;
bool compare_exchange_weak(
Ty& Exp,
Ty Value,
memory_order Order1,
memory_order Order2
) noexcept;
bool compare_exchange_weak(
Ty& Exp,
Ty Value,
memory_order Order1 = memory_order_seq_cst
) volatile noexcept;
bool compare_exchange_weak(
Ty& Exp,
Ty Value,
memory_order Order1 = memory_order_seq_cst
) noexcept;
Parameter
Exp
Nilai jenis Ty.
Value
Nilai jenis Ty.
Order1
Argumen pertama memory_order .
Order2
Argumen kedua memory_order .
Tampilkan Nilai
bool yang menunjukkan hasil perbandingan nilai.
Keterangan
Operasi perbandingan dan pertukaran atom ini membandingkan nilai yang disimpan dengan *this Exp. Jika nilainya sama, operasi menggantikan nilai yang disimpan *this dengan menggunakan Value operasi baca-ubah-tulis dan menerapkan batasan urutan memori yang ditentukan oleh Order1. Jika nilainya tidak sama, operasi menggunakan nilai yang disimpan untuk *this menggantikan Exp dan menerapkan batasan urutan memori yang ditentukan oleh Order2.
Perbandingan atom lemah dan operasi pertukaran melakukan pertukaran jika nilai yang dibandingkan sama. Jika nilainya tidak sama, operasi tidak dijamin untuk melakukan pertukaran.
Kelebihan beban yang tidak memiliki kedua memory_order menggunakan implisit Order2 yang didasarkan pada nilai Order1. Jika Order1 adalah memory_order_acq_rel, Order2 adalah memory_order_acquire. Jika Order1 adalah memory_order_release, Order2 adalah memory_order_relaxed. Dalam semua kasus lain, Order2 sama dengan Order1.
Untuk kelebihan beban yang mengambil dua memory_order parameter, nilai Order2 tidak boleh memory_order_release atau memory_order_acq_rel, dan tidak boleh lebih kuat dari nilai Order1.
atomic::exchange
Menggunakan nilai yang ditentukan untuk menggantikan nilai tersimpan dari *this.
Ty atomic<Ty>::exchange(
Ty Value,
memory_order Order = memory_order_seq_cst
) volatile noexcept;
Ty atomic<Ty>::exchange(
Ty Value,
memory_order Order = memory_order_seq_cst
) noexcept;
Parameter
Value
Nilai jenis Ty.
Order
memory_order.
Tampilkan Nilai
Nilai tersimpan sebelum *this pertukaran.
Keterangan
Operasi ini melakukan operasi baca-ubah-tulis untuk digunakan Value untuk menggantikan nilai yang disimpan di , dalam *thisbatasan memori yang ditentukan oleh Order.
atomic::fetch_add
Mengambil nilai yang disimpan di *this, lalu menambahkan nilai tertentu ke nilai yang disimpan.
Ty atomic<Ty>::fetch_add (
Ty Value,
memory_order Order = memory_order_seq_cst
) volatile noexcept;
Ty atomic<Ty>::fetch_add (
Ty Value,
memory_order Order = memory_order_seq_cst
) noexcept;
Parameter
Value
Nilai jenis Ty.
Order
memory_order.
Tampilkan Nilai
Objek Ty yang berisi nilai yang disimpan *this sebelum penambahan.
Keterangan
Metode ini fetch_add melakukan operasi baca-ubah-tulis untuk secara atomik menambahkan Value ke nilai tersimpan di *this, dan menerapkan batasan memori yang ditentukan oleh Order.
atomic::fetch_and
Melakukan bitwise "dan" (&) pada nilai dan nilai yang ada yang disimpan di *this.
Ty atomic<Ty>::fetch_and (
Ty Value,
memory_order Order = memory_order_seq_cst
) volatile noexcept;
Ty atomic<Ty>::fetch_and (
Ty Value,
memory_order Order = memory_order_seq_cst
) noexcept;
Parameter
Value
Nilai jenis Ty.
Order
memory_order.
Tampilkan Nilai
Objek Ty yang berisi hasil bitwise "dan" (&).
Keterangan
Metode ini fetch_and melakukan operasi baca-ubah-tulis untuk mengganti nilai tersimpan *this dengan bitwise "dan" (&) dari Value dan nilai saat ini yang disimpan dalam , dalam *thisbatasan memori yang ditentukan oleh Order.
atomic::fetch_or
Melakukan bitwise "atau" (|) pada nilai dan nilai yang ada yang disimpan di *this.
Ty atomic<Ty>::fetch_or (
Ty Value,
memory_order Order = memory_order_seq_cst
) volatile noexcept;
Ty atomic<Ty>::fetch_or (
Ty Value,
memory_order Order = memory_order_seq_cst
) noexcept;
Parameter
Value
Nilai jenis Ty.
Order
memory_order.
Tampilkan Nilai
Objek Ty yang berisi hasil bitwise "atau" (|).
Keterangan
Metode ini fetch_or melakukan operasi baca-ubah-tulis untuk mengganti nilai tersimpan *this dengan bitwise "atau" (|) dari Value dan nilai saat ini yang disimpan dalam , dalam *thisbatasan memori yang ditentukan oleh Order.
atomic::fetch_sub
Mengurangi nilai yang ditentukan dari nilai yang disimpan.
Ty atomic<Ty>::fetch_sub (
Ty Value,
memory_order Order = memory_order_seq_cst
) volatile noexcept;
Ty atomic<Ty>::fetch_sub (
Ty Value,
memory_order Order = memory_order_seq_cst
) noexcept;
Parameter
Value
Nilai jenis Ty.
Order
memory_order.
Tampilkan Nilai
Objek Ty yang berisi hasil pengurangan.
Keterangan
Metode ini fetch_sub melakukan operasi baca-ubah-tulis untuk mengurangi nilai tersimpan secara atomik Value dalam , dalam *thisbatasan memori yang ditentukan oleh Order.
atomic::fetch_xor
Melakukan bitwise "eksklusif atau" (^) pada nilai dan nilai yang ada yang disimpan di *this.
Ty atomic<Ty>::fetch_xor (
Ty Value,
memory_order Order = memory_order_seq_cst
) volatile noexcept;
Ty atomic<Ty>::fetch_xor (
Ty Value,
memory_order Order = memory_order_seq_cst
) noexcept;
Parameter
Value
Nilai jenis Ty.
Order
memory_order.
Tampilkan Nilai
Objek Ty yang berisi hasil bitwise "eksklusif atau" (^).
Keterangan
Metode ini fetch_xor melakukan operasi baca-ubah-tulis untuk mengganti nilai tersimpan *this dengan bitwise "eksklusif atau" (^) dari Value dan nilai saat ini yang disimpan di *this, dan menerapkan batasan memori yang ditentukan oleh Order.
atomic::is_lock_free
Menentukan apakah atomic operasi aktif *this bebas kunci.
bool is_lock_free() const volatile noexcept;
Tampilkan Nilai
true jika atomic operasi pada *this adalah bebas kunci; jika tidak, false.
Keterangan
Jenis atomic dikunci bebas jika tidak ada atomic operasi pada jenis tersebut yang menggunakan kunci.
atomic::load
Mengambil nilai tersimpan dalam , dalam *thisbatasan memori yang ditentukan.
Ty atomic::load(
memory_order Order = memory_order_seq_cst
) const volatile noexcept;
Ty atomic::load(
memory_order Order = memory_order_seq_cst
) const noexcept;
Parameter
Order
memory_order. Order tidak boleh memory_order_release atau memory_order_acq_rel.
Tampilkan Nilai
Nilai yang diambil yang disimpan di *this.
atomic::store
Menyimpan nilai tertentu.
void atomic<Ty>::store(
Ty Value,
memory_order Order = memory_order_seq_cst
) volatile noexcept;
void atomic<Ty>::store(
Ty Value,
memory_order Order = memory_order_seq_cst
) noexcept;
Parameter
Value
Objek Ty.
Order
Batasan memory_order .
Keterangan
Fungsi anggota ini secara atomik menyimpan Value dalam , dalam *thisbatasan memori yang ditentukan oleh Order.