fork download
  1. #include <iostream>
  2. #include <atomic>
  3. #include <thread>
  4. #include <vector>
  5.  
  6. // Deklarasi variabel hitung atomik
  7. std::atomic<int> counter(0);
  8.  
  9. // Fungsi yang akan dijalankan oleh setiap thread
  10. void increment() {
  11. for (int i = 0; i < 10000; ++i) {
  12. counter++; // Operasi atomik
  13. }
  14. }
  15.  
  16. int main() {
  17. const int num_threads = 10;
  18. std::vector<std::thread> threads;
  19.  
  20. // Membuat dan menjalankan thread
  21. for (int i = 0; i < num_threads; ++i) {
  22. threads.push_back(std::thread(increment));
  23. }
  24.  
  25. // Menunggu semua thread selesai
  26. for (int i = 0; i < num_threads; ++i) {
  27. threads[i].join();
  28. }
  29.  
  30. // Menampilkan hasil akhir
  31. std::cout << "Hasil akhir hitungan atomik: " << counter.load() << std::endl; // Membaca nilai atomik
  32.  
  33. return 0;
  34. }
  35.  
Success #stdin #stdout 0.01s 5316KB
stdin
Standard input is empty
stdout
Hasil akhir hitungan atomik: 100000