Atomic Bool di C++
Atomic bool di C++ adalah tipe data boolean yang dijamin thread-safe. Ini berarti bahwa dalam program multi-threaded, operasi pada atomic bool akan selalu dilakukan dengan benar, bahkan jika beberapa thread mencoba mengaksesnya secara bersamaan.
Keuntungan Menggunakan Atomic Bool
- Thread-safety: Atomic bool menjamin bahwa operasi pada variabel boolean dilakukan secara atomic, mencegah kondisi race dan kesalahan lainnya dalam program multi-threaded.
- Kemudahan Penggunaan: Atomic bool mudah digunakan dan memiliki interface yang sederhana, membuatnya cocok untuk berbagai skenario.
- Efisiensi: Atomic bool dioptimalkan untuk performa dan efisiensi, membuatnya cocok untuk aplikasi yang membutuhkan kinerja tinggi.
Penggunaan Atomic Bool
Berikut adalah contoh penggunaan atomic bool:
#include
#include
std::atomic flag = false;
void worker_thread() {
// Periksa flag secara atomic
while (!flag.load()) {
// Lakukan pekerjaan
}
// Keluar dari thread
}
int main() {
std::thread thread1(worker_thread);
// Lakukan beberapa pekerjaan di thread utama
// Set flag secara atomic
flag.store(true);
// Tunggu thread1 selesai
thread1.join();
return 0;
}
Pada contoh di atas:
std::atomic<bool> flag = false;
mendeklarasikan variabel atomic boolean bernamaflag
dengan nilai awalfalse
.flag.load()
digunakan untuk membaca nilaiflag
secara atomic.flag.store(true)
digunakan untuk menulis nilaitrue
keflag
secara atomic.
Operasi Atomic Bool
Berikut adalah beberapa operasi atomic yang tersedia untuk atomic bool:
load()
: Membaca nilai atomic bool.store()
: Menulis nilai baru ke atomic bool.exchange()
: Mengganti nilai atomic bool dengan nilai baru dan mengembalikan nilai lama.compare_exchange_weak()
: Membandingkan nilai atomic bool dengan nilai yang diberikan, dan jika sama, mengganti nilai atomic bool dengan nilai baru.compare_exchange_strong()
: Mirip dengancompare_exchange_weak()
, tetapi menjamin bahwa operasi dilakukan secara atomic.
Kesimpulan
Atomic bool adalah alat yang ampuh untuk mengelola variabel boolean dalam program multi-threaded. Mereka menawarkan thread-safety, kemudahan penggunaan, dan efisiensi, membuatnya menjadi pilihan yang sangat baik untuk berbagai skenario.