Modernes C++ programmieren

Okt 23, 2024

lst-1002-godb.cpp

//#(compile) c++; compiler:g132; options:-O3 -std=c++23; libs:-
// https://godbolt.org/z/GnsWYvecv 
#include <iostream>
#include <thread>
#include <chrono>
using namespace std::chrono; // seconds, suffix s
struct Zustand {
    int zaehler;
};
void zeigeZustand(const Zustand& zustand) {
    for(auto i : { 5,4,3,2,1 }) {
        std::cout << "zaehler: " << zustand.zaehler << std::endl;
        std::this_thread::sleep_for(1s);
    }
}
int main() {
    Zustand zustand { 4 };
    std::jthread th{zeigeZustand, std::ref(zustand)}; // bleibt Referenz auf zustand
    std::this_thread::sleep_for(1s);
    zustand.zaehler = 501;
    std::this_thread::sleep_for(1s);
    zustand.zaehler = 87;
    std::this_thread::sleep_for(1s);
    zustand.zaehler = 2;
}