Problem mit Thread und Klasse



  • Hallo,

    ich habe folgendes Problem: Ich habe eine Klasse. Mit einer Methode greife ich auf diese zu. Diese Methode soll dann einen Thread starten.
    Der Code sieht folgendermaßen aus:

    #include <thread>
    
    void tthread()
    {
        //bla
    };
    
    class Klasse
    {
        void erzeugen()
        {
            std::thread th(tthread);
        };
    };
    
    int main()
    {
        Klasse *Kla = new Klasse;
        Kla->erzeugen();
    };
    

    Der Code wird bei der Ausführung mit einem Abbruch beendet.
    Ich hoffe, ihr könnt mir helfen.

    Gruß



  • #include <thread>
    #include <iostream>
    
    void my_thread()
    {
    	std::cout << "Hello, thread!" << std::endl;
    }
    
    class my_class_t
    {
    	private:
    		std::thread thread;
    
    		my_class_t( my_class_t const & ); // not copyable
    
    	public:
    		my_class_t() : thread() {}
    		~my_class_t() { thread.join(); }
    
    		void run() { thread = std::thread( my_thread ); }
    };
    
    int main()
    {
    	my_class_t my_class;
    
    	my_class.run();
    }
    


  • Fang doch mal die exception ab.
    Vielleicht hast du aber auch einen Fehler in der Funktion.



  • Marthog schrieb:

    Fang doch mal die exception ab.

    Welche denn?



  • Danke, es funktioniert.

    Gruß



  • Jetzt habe ich ein weiteres Problem: Wenn ich die Methode für den Thread nocheinmal aufrufe, dann bricht das Programm erneut ab.

    Die main()-Funktion umgeschrieben, so wie ich es meine:

    int main()
    {
        my_class_t my_class;
        while(true)
        {
            //5 Sekunden warten
            my_class.run();
        }
    }
    

    Gibt es dafür auch eine Lösung?

    Gruß


Anmelden zum Antworten