Atomic Decrement C++

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

Atomic Decrement dalam C++

Atomic decrement adalah operasi yang mengurangi nilai sebuah variabel atomik dengan satu. Dalam C++, operasi atomic decrement dapat dilakukan menggunakan fungsi -- yang diaplikasikan pada variabel atomik.

Pengertian Variabel Atomik

Variabel atomik adalah variabel yang dijamin aman untuk diakses secara bersamaan oleh beberapa thread. Operasi pada variabel atomik dilakukan secara atomic, yaitu operasi tersebut dijalankan dalam satu langkah tanpa terputus, sehingga memastikan konsistensi data meskipun diakses oleh beberapa thread secara bersamaan.

Keuntungan Menggunakan Atomic Decrement

  • Keselamatan Thread: Mencegah race condition dan memastikan konsistensi data ketika diakses secara bersamaan oleh beberapa thread.
  • Efisiensi: Mengoptimalkan kinerja dengan meminimalisasi kebutuhan locks dan synchronization overhead.

Contoh Penggunaan

#include 
#include 
#include 

std::atomic counter(10);

void decrementCounter() {
  for (int i = 0; i < 5; ++i) {
    std::cout << "Thread " << std::this_thread::get_id() 
              << ": Decremented counter to " << --counter << std::endl;
  }
}

int main() {
  std::thread thread1(decrementCounter);
  std::thread thread2(decrementCounter);

  thread1.join();
  thread2.join();

  std::cout << "Final counter value: " << counter << std::endl;

  return 0;
}

Penjelasan

  1. Deklarasikan variabel atomik counter dengan nilai awal 10.
  2. Buat dua thread yang menjalankan fungsi decrementCounter.
  3. Fungsi decrementCounter melakukan decrement pada variabel counter sebanyak 5 kali.
  4. Gunakan std::this_thread::get_id() untuk mendapatkan ID dari setiap thread.
  5. Setelah kedua thread selesai, cetak nilai akhir dari variabel counter.

Output

Thread 0x7f9b60a94700: Decremented counter to 9
Thread 0x7f9b60a94700: Decremented counter to 8
Thread 0x7f9b60a94700: Decremented counter to 7
Thread 0x7f9b60a94700: Decremented counter to 6
Thread 0x7f9b60a94700: Decremented counter to 5
Thread 0x7f9b60a9a740: Decremented counter to 4
Thread 0x7f9b60a9a740: Decremented counter to 3
Thread 0x7f9b60a9a740: Decremented counter to 2
Thread 0x7f9b60a9a740: Decremented counter to 1
Thread 0x7f9b60a9a740: Decremented counter to 0
Final counter value: 0

Kesimpulan

Atomic decrement merupakan operasi yang penting dalam pemrograman multithreaded di C++. Dengan menggunakan atomic decrement, Anda dapat memastikan konsistensi data dan menghindari race condition ketika mengakses variabel secara bersamaan dari beberapa thread.

Latest Posts