#include #include #include #include using namespace std ; // An atomic counter atomic atomic_counter(0); void increment_atomic_counter() { for (int i1 = 0; i1 < 100000; ++i1) { int temp1 = atomic_counter ; temp1 = temp1 + 1 ; atomic_counter = temp1 ; } } int main() { vector threads; // Test with atomic counter cout << "Testing atomic counter..." << endl; for (int i = 0; i < 10; ++i) { threads.push_back(thread(increment_atomic_counter)); } for (auto& t : threads) { t.join(); } cout << "Atomic counter final value: " << atomic_counter << endl; // Expected: 10 * 100000 = 1000000 // Reset and test with non-atomic counter return 0; }