C++ Klasse bei Programmaufruf starten



  • Hallo,

    ich bin grade dabei ein Programm in C++ zu schreiben. Ich verwende Klassen die ich in der main.cpp instanziere.

    Der Aufbau ist folgendermaßen main.cpp (included test.h) test.h test.cpp

    Wie kann ich eine Funktion/Klasse aus der test.cpp aus der main.cpp aufrufen, sobald das Programm gestartet wird und nebenbei/parallel funktioniert.

    Ich habe bisschen recherchiert und bin auf pthread gestoßen. Jedoch bin ich damit nicht so richtig zurech gekommen.

    Hat jemand von euch eine Idee wie so etwas programmiertechnisch auszusehen hat?

    Gruß Julian



  • Threads sind richtig ja, aber das ist ein äußerst komplexes Thema was weit über einen Forenbeitrag hinaus geht. Versuchs vielleicht für den Anfang mal ohne.



  • kannst auch boost threads nutzen, die sind wie ich finde etwas leichter zu hand haben und es gibt mehr beispiele und tutorials... 🙂

    zumindest als ich mich vor 1-2 jahren mal damit beschäftigt hatte, vll hat sich das auch geändert...

    lg



  • Nathan schrieb:

    Threads sind richtig ja, aber das ist ein äußerst komplexes Thema was weit über einen Forenbeitrag hinaus geht. Versuchs vielleicht für den Anfang mal ohne.

    Das habe ich aus den ersten Anleitungen auch sehen können 😡

    Gibt es denn eine Alternative zu threads?



  • Das einfachste ist vielleicht mit openmp zu arbeiten:

    struct A
    {
        void f() const { std::cout<<"hallo1"; }
    };
    
    void g() { std::cout<<"hallo2";}
    
    int main()
    {
        A a;
        #pragma omp parallel sections
        {
            #pragma omp section
            {
                a.f();
            }
            #pragma omp section
            {
                g();
            }
        }
    }
    

    Jetzt sollten a.f() und g() parallel ausgeführt werden.



  • asdfasd schrieb:

    Das einfachste ist vielleicht mit openmp zu arbeiten:

    struct A
    {
        void f() const { std::cout<<"hallo1"; }
    };
    
    void g() { std::cout<<"hallo2";}
    
    int main()
    {
        A a;
        #pragma omp parallel sections
        {
            #pragma omp section
            {
                a.f();
            }
            #pragma omp section
            {
                g();
            }
        }
    }
    

    Jetzt sollten a.f() und g() parallel ausgeführt werden.

    Die Sache ist, jetzt wird meine Funktion dauerhaft ausgeführt. Das ist auch beabsichtigt, jedoch wird mir das Hauptprogramm nicht mehr angezeigt. Das heißt, dass nur diese Funktion ausgeführt wird.


Anmelden zum Antworten