Cygwin GCC und std::thread Support



  • Hey Community,

    hoffe ich bin hier einigermaßen richtig mit meiner Frage. Wenn nicht, dann entschuldige ich mich jetzt schon.

    Ich spiele derzeit ein wenig mit den neuen C++0x Features der GCC herum, und das mit Cygwin unter Windows (ich habe hier leider kein Dual-Boot- oder Unix-System, sonst würde ich's nativ machen...). Dazu habe ich mir einen Nightly-Build aus dem GCC Repository gezogen und compiled - funktioniert auch alles, auch die C++0x Sachen.

    Als ich allerdings mit den neuen std::thread Funktionalitäten rumprobieren wollte musste ich feststellen, dass

    _GLIBCXX_HAS_GTHREADS
    

    nicht definiert ist, und somit auch die Implementierung zu der Thread Library nicht angezogen werden.

    Ich weiß zwar, dass Cygwin das alles etwas wackelig macht, aber bisher war mein Wissensstand, dass die gthreads auf den pthreads aufbauen und die wiederum mittlerweile Bestandteil von Cygwin sind... liege ich da falsch? Mein GCC 4.7 ist übrigens mit --enable-threads=posix konfiguriert.

    Ich werde jetzt einfach kurz zu boost::thread wechseln, aber mich würde doch gerne interessieren was hier bei mir falsch laufen könnte. Falls jemand was weiß wäre ich dankbar für jede Info 🙂

    Gruß
    PuerNoctis



  • Okay, ich konnte die Frage mittlerweile selbst beantworten. Cygwin hat zwar pthreads inne, jedoch keine Implementierung für pthread_mutex_timedlock . Die std::thread Library benötigt diese aber und checlt per autoconf danach. Im Falle von Cygwin wird _GLIBCXX_HAS_GTHREADS also deaktiviert - derzeit also kein Support in GCC 4.7 unter Cygwin.

    Schade. Case closed.



  • Die c++0x thread Klasse ist noch nicht in gcc drin.
    Das siehst du hier: http://gcc.gnu.org/projects/cxx0x.html



  • Ich kenn die Seite sogar. Falls Du das "Thread-Local-Storage" meinst: TLS hat ja nichts direkt mit der Thread Library zu tun, obacht.

    Ich ging egtl. immer von dieser Seite aus:

    http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x

    Dort unter Punkt 30 - 30.6.10 sind lediglich die atomic_futures noch nicht implementiert, der Rest zumindest partiell oder soger vollständig.

    Aber was etz auch ist, ich setze mir jetzt einfach ein schnelles Ubuntu auf 😉



  • OK
    Also mingw hat momentan noch kein thread drin. Aber ich weiß nicht wie weit sie schon gcc portiert haben.


Anmelden zum Antworten