Design Problem - Thread nimmt keine Memberfunktionen
-
Ich habe folgendes Scenario:
(Nach dem Scenario erst den Teil nach "PS:" lesen)class Server { private: UDP* RecieverSocket; void Listen(); std::thread Listener; Server( /* ... */ ); } Server::Listen() { //... do something } Server::Server( /* ... */ ) { Listener = std::thread(&Listen); }Allerdings will der thread die Funktion Listen nicht nehmen, da sie Teil einer Klasse ist.
Wie löse ich dieses Problem?
PS: (Alternative Frage, falls ich auf dem richtigen Weg bin: )Ich habe hier: http://www.c-plusplus.net/forum/280475 von "boost::bind()" gelesen, aber thread ist ja jetzt im neuen Standard, wie heißt die equivalente Funktion dazu und wo finde ich sie und wie nutze ich sie richtig?
-
Für welches Server-Objekt soll Listen denn aufgerufen werden? Für *this? Wenn du diese Frage beantworten kannst, dann kann man dir helfen. In jedem Fall bist du mit bind schon auf dem richtigen Weg, sei es boost::bind oder das (mehr oder weniger identische) bind aus C++11 (welches du auch haben solltest, wenn du std::thread hast). Oder, wenn du richtig oldschool sein möchtest, mit mem_fun & Co. (Wobei bind dadurch motiviert ist, dass man sich eben nicht mit diesen alten Funktionsbindern rumschlagen möchte.)
-
Ja kann ich, kann es aber nicht ausprobieren, da ich gerade nicht am Rechner mit dem richtigen Compiler (für C++11) bin. Aber jetzt weiß ich ja, was ich brauche.