C++: Thread der durch Usereingabe geblockt wird stoppen oder killen

#1

Hallo,
ich möchte einfach eine kurze Antwort haben. Ich hab schon danach gesucht, aber alles scheint irgendwie wie ein Workaround. Ich hab:

void userEingabe() {
  while (fenster Sollte Nicht Schließen()) {
    int eingabe;
    std::cout << "Gib was ein: ";
    std::cin >> eingabe;
  }
}

std::thread userEingabeThread(userEingabe, (((void))) );

userEingabeThread möchte ich jetzt stoppen oder killen, wenn Fenster geschlossen wurde. WIE?

(Es ist teilweise Pseudocode, aber ihr wisst bestimmt, was ich meinte).
Grüße

#2

c++ - How can I terminate a C++11 thread while it’s waiting for std::cin? - Stack Overflow

#3

Alles könnte sooo einfach sein:

    second = std::thread(fun1, window); // hier tue ich ein paar Dinge
    third = std::thread(fun2, window); // hier auch

    // glfw main loop ...
    while (!glfwWindowShouldClose(window)) {
        // hier ganz viele Dinge und so
    }

    std::terminate();

    // aufräumen ...
    release();
    glfwTerminate();
    
    std::cout << "alles ok" << std::endl; // wird nicht ausgegeben werden, wenn Fenster durch User geschlossen

    return 0;

Durch terminate “werden auch die Threads angesprochen” … es wird aber nicht mehr aufgeräumt…
Grüße

(Edit: Ja, C++11, vielleicht “spinne” ich auch).