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.
-
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.