Multithreading, OpenMP ohne dyn. Linken



  • Ich will eine multithreaded Library auliefern, und zwar möglichst
    kundenfreundlich. Ich bin mit OpenMP und Boost-Thread vertraut, aber Boost
    ist unter Win64 nicht ganz einfach zu installieren, und OpenMP gibt es
    glaub ich für die Express-Versionen von Visual Studio nicht oder zumindest
    nicht ohne Frickelei. Ich will auch nicht alle möglichen Boost-Libs
    mitausliefern. Gibt es vielleicht eine Header-only-Library *träum* für
    Multithreading oder notfalls die Möglichkeit, das nötige Zeug statisch zu
    linken? Soll aber unter Linux und Windows funktionieren.


  • Mod

    Nun, es gibt native Threadunterstützung in C++11. Die eigentlichen Threadingbibliotheken dahinter (z.B. pthread unter Linux) sollte man (zumindest unter Linux) zwar auch nicht statisch linken, aber das ist auch gar nicht nötig, da diese zum Grundstandard des Betriebssystems gehören.
    Mit Windows kenne ich mich nicht so aus, sollte ähnlich sein.



  • SeppJ schrieb:

    Nun, es gibt native Threadunterstützung in C++11. Die eigentlichen Threadingbibliotheken dahinter (z.B. pthread unter Linux) sollte man (zumindest unter Linux) zwar auch nicht statisch linken, aber das ist auch gar nicht nötig, da diese zum Grundstandard des Betriebssystems gehören.
    Mit Windows kenne ich mich nicht so aus, sollte ähnlich sein.

    Daran habe ich schon gedacht. Aber das scheitert an MSVC: VS2010 kann kein
    Concurrency:

    http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx

    (Ich hab mein schönes C++11-Buch wieder weggelegt, weil mein Zeug auch auf
    VS2010 compilieren muß und der noch nicht einmal range-based-loops kann.)



  • Du kannst ja statt dem Visual STudio einfach den GCC verwenden. Der hat _UM WELTEN_ bessere C++11 Unterstuetzung, und ist ebenfalls gratis. Als IDE ist evlt. Code::Blocks geeignet.



  • Blue-Tiger schrieb:

    Du kannst ja statt dem Visual STudio einfach den GCC verwenden. Der hat _UM WELTEN_ bessere C++11 Unterstuetzung, und ist ebenfalls gratis. Als IDE ist evlt. Code::Blocks geeignet.

    Ich entwickle ohnehin unter Linux mit GCC, aber das hilft nicht, denn es
    geht darum, eine Library auch als *.dll für VS2010 User verfügbar zu machen.



  • Vielleicht ist das was für dich:

    http://tinythreadpp.bitsnbites.eu/

    Abgesehen davon, kann man Boost auch statisch linken ...



  • Bloops schrieb:

    Vielleicht ist das was für dich:

    http://tinythreadpp.bitsnbites.eu/

    Abgesehen davon, kann man Boost auch statisch linken ...

    (+++) Das sieht genau nach dem aus, was ich brauche. Danke!

    Boost hätte ich statisch linken können, das stimmt. Ich habe aber auch eine
    Abhängigkeit im Projekt, die nur dynamisch gelinkt werden kann und ich bin
    mir nicht sicher, ob man statisch und dynamisch Linken mischen kann? Wenn
    ich dem gcc das "-static" gebe, will er ja alles statisch machen.


  • Mod

    MTx7 schrieb:

    ich bin
    mir nicht sicher, ob man statisch und dynamisch Linken mischen kann? Wenn
    ich dem gcc das "-static" gebe, will er ja alles statisch machen.

    Doch das geht, es gibt sogar viele Wege:
    Google: gcc link some libraries statically



  • SeppJ schrieb:

    MTx7 schrieb:

    ich bin
    mir nicht sicher, ob man statisch und dynamisch Linken mischen kann? Wenn
    ich dem gcc das "-static" gebe, will er ja alles statisch machen.

    Doch das geht, es gibt sogar viele Wege:
    Google: gcc link some libraries statically

    danke!


Log in to reply