Thread in einer Klasse
-
Ist es möglich eine "Thread-Methode" in einer Klasse zu haben? Also das ich praktisch eine Methode einer Klasse als Thread aufrufen kann? (WINDOWS C++)
danke
-
Also ich kenne die WinAPI nicht, aber unter Linux funktioniert das mit statischen Member Funktionen. Eventuell unter Windows ähnlich.
PS: falsches Forum...
-
Mit boost::thread kannst Du auch eine Methode einer Klasse als Threadfunktion nutzen

-
soo also folgendes:
Du brauchst eine statische Funktion damit das geht:template <typename Tobj, Tp1, Tp2> struct thread_proc { template <typename Tobj, Tp1, Tp2> struct data { Tobj* obj; typedef (Tobj::*func)(Tp1 const&, Tp2 const&); func fnPtr; Tp1 p1; Tp2 p2; data(Tobj* obj, func fnPtr, Tp1 const& p1, Tp1 const& p2) : obj(obj), fnPtr(fnPtr), p1(p1), p2(p2) {} } m_data; static DWORD method(LPVOID* data) { data<Tobj, Tp1, Tp2>* struct_data(static_cast<data<Tobj, Tp1, Tp2>*>(data)); (struct_data->obj->*func)(struct_data->p1, struct_data->p2); } thread_proc(Tobj* ptrObj, Tp1 const& p1, Tp1 const& p2) : };... So, das sieht komplex aus, ist aber eigtl. relativ einfach ... hab gerade aber keine Zeit das zu erklären ...
thread_proc<foo, int, short>::data my_data(&foo, &foo::thread_handler, 10, 10);deine Daten und wenn du halt Parameter übergeben willst halt den Typ (int und short in dem Fall) und dann halt die entsprechenden Werte angeben ...
&thread_proc<foo, int, short>::methodals Funktion angeben und dann als Parameter einen Zeiger auf deine my_data-Strukture angeben. Fertig

Achja noch ein Hinweiß:
Ein Typedef ist da nen praktisches DingsBums ...^^
@danke für den Hinweiß mit dem Tobj statt T ... Tippfehler
-
BOhaa, was ist das. Da brauche ich ja eine Woche um das zu verstehen

Ich schau mir das mal genauer an, danke.

-
typedef (Tobj::*func)(Tp1 const&, Tp2 const&);