Atomic Bool C++

3 min read Jun 28, 2024
Atomic Bool C++

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 bernama flag dengan nilai awal false.
  • flag.load() digunakan untuk membaca nilai flag secara atomic.
  • flag.store(true) digunakan untuk menulis nilai true ke flag 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 dengan compare_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.

Featured Posts