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

  • 1) DENKEN: braucht es wirklich Threads ?
    2) Wenn ja: GANZ SICHER ??
    3) Wenn immer noch ja: WIRKLICH GANZ SICHER ???
    (Threads sind deutlich schwieriger in den Griff zu kriegen
    als ein Programm zu Compilieren!)

    Wenn immer noch ja: C++ 11 hat Threads, also nicht mit pthread basteln.

    Und zum Schluss: viel Glueck.
    (Das ist mein letzter Post in diesem Thread)

  • Naja es würde erstmal das Problem lösen welches ich habe.
    Ob es die effektivste Methode ist, sei mal dahingestellt.

    Gibt es bessere Alternativen, die man Deiner Meinung nach nutzen kann?

    gruß


  • Alternativen?
    Ohne das Problem zu kennen?
    :(

    Nun ja es soll folgendes machen.

    Während das Hauptprogramm normal bedient werden kann,
    also nornale cin und cout Befehle usw.

    Und beim Start des Hauptprogramms soll
    eine Funktion einer Klasse ausgeführt werden.
    In dieser Funktion ist eine while(1) Schleife, die also
    dauerhaft ausgeführt wird. Dies ist auch so beabsichtigt
    da das Hauptprogramm dauerhaft ausgeführt werden soll.

  • Das beantwortet aber immer noch nicht was du in dem Thread ausführen willst. Die frage ist doch, ob du wirklich die unbekannte aufgabe nebenher laufen lassen musst, also was soll da gemacht werden? Wenn diese Aufgabe die in dem Thread ausgeführt werden soll, Ein- bzw. Ausgabe im Hauptthread machen soll dann überleg dir schon mal wie du das ganze Händeln willst wie willst du von Hauptthread aus den gestarteten Thread beenden, wie willst du alles Syncronisieren.

    Wenn die Nutzung von Threads so Easy wäre wie du sicher annimmst, einfach mal starten und dann kann man kreuz und quer durch das Programm mit arbeiten dann würden sicher schon lange Spiele existieren die auch nen 8 Kerner mit allen mehr als 8 threads auslasten könnten, da es aber gar nicht so einfach ist das auch alles so zu machen das es einem nicht gleich um die ohren Fliegt, deswegen gibts da nun mal nicht massen davon.

    Also mehr Infos und vielleicht kann dir dann jemand helfen.

  • Ich glaube dann habe ich mich nicht korrekt ausgedrückt.
    Es ist ein komplett kommandozeilenbasiertes Programm.
    Es kann natürlich sein, dass ich komplett falsche Vorstellungen habe, was möglich und nicht möglich ist mit C++.

    Gibt es denn eine bessere Möglichkeit folgende Problemstellung zu lösen?

    Ich starte das Hauptprogramm, welches für die dauerhafte Nutzung vorgesehen ist.
    Die Klasse 'messen' wird instanziert.
    Sämtliche Klassenfunktion sind in der messen.cpp aufgeführt.
    Unter anderem ist dort auch eine Funktion messen::messung()
    Diese hat eine while(1) schleife und soll dauerhaft laufen.
    Unterdessen kann in der main.cpp die normalen Funktionen weiterhin genutzt werden.
    Die Funktion messen::messung() erzeugt keinerlei Bildschirmausgabe oder erfordert keine
    Eingaben. Die Funktion fragt lediglich Werte ab und speichert diese in eine SQL Datenbank.

    Ist threading dafür nun das richtige, oder gibt es sinnvollere Möglichkeiten?

    Gruß
    Julian

  • Moin Julian,


    ...
    Es kann natürlich sein, dass ich komplett falsche Vorstellungen habe, was möglich und nicht möglich ist mit C++.
    ...


    das hat wohl weniger mit den Möglichkeiten von C++ zu tun.
    Ich habe eher den Eindruck, dass es da schon am Grundverständnis von C++ fehlt.
    Was Du brauchst ist imho nicht threading, sondern erst einmal zumindest ein Crashkurs in C++ ...

    Nix für ungut,
    -ds-

  • Threading ist sinnvoll wenn Daten zwischen Thread und Hauptprogramm ausgetauscht werden sollen.

    Da deine Methode aber scheinbar keine Daten tauschen muss, könntest du genauso gut fork() nutzen.


  • ...
    Threading ist sinnvoll ...
    ...


    wenn für eine oder mehrere Aufgaben kein eigenständiger Prozess benötigt wird. Ob da Daten ausgetauscht werden oder nicht ist dabei vollkommen unerheblich, denn auch zwischen durch fork() erzeugten Prozessen ist es problemlos möglich, Daten auszutauschen.
    cu,
    -ds-

  • Sorry hatte mich doof ausgedrückt, gemeint war Zugriff auf gleiche Speicherbereiche. (geht zwar auch bei fork(), ist imho den Aufwand aber nicht Wert) ;)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!