Modernes C++ programmieren

Okt 23, 2024

lst-1011-godb.cpp

//#(compile) c++; compiler:g132; options:-O3 -std=c++23; libs:-
// https://godbolt.org/z/7GEs9a4n6 
#include <thread>
#include <iostream>

int count = 0; // wird simultan verändert

void run() {
    for(int i=0; i<1'000'000; ++i) {
        count += 1;   // ungeschützt
    }
}

int main() {
    std::cout << "Start: " << count << '\n';  // Ausgabe: Start: 0
    std::thread th1{ run };
    std::thread th2{ run };
    std::thread th3{ run };
    th1.join(); th2.join(); th3.join();
    std::cout << "Ende: " << count << '\n';  // Ausgabe sicher nicht: 3000000
}