Problem mit this_thread



  • Ich habe ein Übungsbeispiel aus "Der C++-Programmierer" 1:1 in die IDE (Code Blocks) kopiert (Source unten). Der Compiler (GNU C++11) meldet mir den Fehler:
    'this_thread' has not been declared (Zeile 7).
    Offensichtlich kennt der Comiler den namespace this_thread nicht, obwohl der Header thread inkludiert ist.

    #include <iostream>
    #include <chrono>
    #include <thread>
    using namespace std;
    
    void f(int t) {
       this_thread::sleep_for(chrono::seconds(t));
       cout << "Thread " << this_thread::get_id()
            << " : Funktion beendet! Laufzeit = " << t << " s" << endl;
    }
    
    int main() {
       thread t1(f, 4);
       // der restliche Code
       return 0;
    }
    

    Bis jetzt haben alle Beispiele aus dem Buch funktioniert. Bis jetzt...
    Auch ein Blick in die (online-)Errata des Buches half nichts.
    Hat jemand eine Ahnung, weshalb der Compiler meckert?
    Vielleicht muss ich an den Compilereinstellungen Änderungen vornehmen. Die Frage ist nur, welche?

    Karl99



  • Hast du sonst schon mal etwas mit threads erfolgreich kompiliert? Vielleicht must du dem Compiler noch mitteilen, das du mit Thread-Unterstützung kompilieren willst. Welche Version des GCC benutzt du?

    Ergänzung: Der Code ist ok, daran kann es nicht liegen.



  • TNA schrieb:

    Hast du sonst schon mal etwas mit threads erfolgreich kompiliert?

    Ja, aber nicht mit C++ 😉

    TNA schrieb:

    Vielleicht must du dem Compiler noch mitteilen, das du mit Thread-Unterstützung kompilieren willst.

    Ich kann keine Möglichkeit dazu finden.

    TNA schrieb:

    Welche Version des GCC benutzt du?

    mingw32-gcc-4.7.1.exe laut Settings/Compiler settings/Toolchain executables.


  • Mod

    Karl99 schrieb:

    TNA schrieb:

    Welche Version des GCC benutzt du?

    mingw32-gcc-4.7.1.exe laut Settings/Compiler settings/Toolchain executables.

    Ich kann mich dunkel erinnern, dass da irgendwas mit mingw und Threads war. Entweder gab's die gar nicht oder nur in irgendwelchen speziellen Versionen.

    Ein Anfang:
    Google: mingw threads



  • Danke für den Hinweis.
    Ja, wenn man nach etwas sucht, das es gar nichte gibt... 🙄



  • Du brauchst afaik die MinGW Version mit PThreads, nicht die anderen.


Log in to reply