Threads



  • Hallo zusammen und einen schönen guten Abend!
    Ich hätte hier mal eine Frage, folgenden Code habe ich beim lernen gerade entdeckt!

    class backgroundTask {
    public:
    void operator()() const {
    doSomething();
    doSomethingElse();
    } };
    backgroundTask bt;
    std::thread myThread(bt);
    

    Ich verstehe soweit auch die einzelnen Zeilen die in dem Code stehen.
    Ich weis ja das ich das ganze hier Callable machen muss ist ja der Fall da ja die () überladen sind.
    Jetzt dachte ich mir ich könnte ja dann einfach schreiben:

    //doSomething();
    //doSomethingElse();
    cout << "Halllo!" << endl;
    

    Danach wollte ich anschließend in meiner main folgendes machen:

    int main()
    {
    	backgroundtask bt;
    	thread myThread(bt);
    	return 0;
    }
    

    Es tritt folgender Fehler auf:Nicht definierter Verweis auf `pthread_create'.
    Was mache ich jetzt genau falsch bzw was haben ich dabei nicht bedacht?


  • Mod

    Das ist kein Problem mit deinem Programm, sondern mit der Art und Weise, wie du es übersetzt. Bei vielen Compilern/Linkern muss man die Unterstützung für Threads ausdrücklich aktivieren. Falls du beispielsweise das Gnu Compiler und Linkergespann (GCC) benutzt, dann übergib mal den Parameter -pthread beim Übersetzen.



  • Vielen Dank für die Antwort naja CodeBlocks eben,
    terminal gehts danke ist mir echt nicht selber eingefallen.
    Manchmal sollte man noch mehr nachdenken.
    Vielen Lieben Dank für die schnelle Antwort!
    Ich wünsche noch einen schönen Abend sowie ein schönes Wochenende!
    🙂 😃


  • Mod

    Bei deiner IDE kann man gewiss auch Parameter an den Übersetzer übergeben. Ist ja gerade der Sinn einer IDE, solche Dinge zu automatisieren.



  • Vergiss den join vom Thread nicht, sonst fliegt dir alles um die Ohren.


Log in to reply