Input Thread



  • Hey Leute,
    Zurzeit arbeite ich an einem KOnsolen Programm und habe mich bis jetzt vor einem Input Thread verdrückt. Nun wollte ich gerade ein Input thread geschrieben der jedoch nicht funktioniert. Mein Problem bei diesem Code ist: Das das Programm sich trotzdem schliest obwohl s ja im HIntergrund jeden input akzeptieren sollte.

    Hier mein CODE:

    void Server::InputThread()
    {
        std::string Command;
        while(std::cin.good())
        {
            std::getline(std::cin, Command);
            if (!Command.empty())
            {
                std::cout << "Input reingekommen" << std::endl;
            }
        }
    }
    
    im Server COnstructer:
    
    Server::Server()
    {
    ...
    std::thread Thread(&Server::InputThread, this);
            Thread.detach();
    ...
    }
    


  • s. den ähnlichen Beitrag thread hängt bei while (Antwort von manni66)

    Die Frage ist, was macht dein Hauptthread? Wartet der? Denn wenn nicht, dann beendet sich halt dein Programm.

    Die eigentliche Frage ist aber, warum du in einem Thread die Konsoleneingabe abfragst?



  • Mein eigentliches Ziel ist es Inputs abzufangen und gleichzeitig andere dinge auszuführen. Ohne einen Thread (also in einer While schleife) würde das Programm die ganze Zeit an der While schleife sitzen. Deswegen verwende ich einen Thread dafür verwenden der alleidings nicht funktioniert. Dieser Thread soll die ganze Zeit laufen und durch einen befehl der dann in einem code von der INputThread funktion drinne ist das Programm beenden



  • Kanns sein, daß du dich bei deinem Vornamen schlicht vertan hast, JürHH^HTobias?



  • Ich würde die Arbeit im Hintergrund erledigen und den Input im main-Thread behandeln.


Log in to reply