pthread in klasse starten?
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
debian inside schrieb:
ich versuch nen pthread in ner klasse zu starten
aber irgendwie klappt das nicht so wie wenn ich es nur als funktion verwendeDu musst schon deine Fragen richtig stellen, damit man sie beantworten kann
wmfrs <-- lesen!
-
Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Rund um die Programmierung in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Die Startfunktion eines Threads darf nicht eine static Funktion innerhalb einer Klasse sein, sondern muss eine freistehende Funktion mit C Bindung sein, auch wenn ersteres meistens klappt.
Zum Beispiel:
extern "C" void * start_thread(void * arg) { return static_cast<Foo*>(arg)->run(); }
Weitere Infos in der comp.programming.threads FAQ:
-
danke
warum kann dieser thread der gestartet wurde nicht auf die elemente der klasse zugreifen?
ich bekomm immer speicherzugriffsfehler
-
debian inside schrieb:
danke
warum kann dieser thread der gestartet wurde nicht auf die elemente der klasse zugreifen?
ich bekomm immer speicherzugriffsfehlerDu solltest ein minimales, lauffähiges Programm posten, dass den Absturz zeigt.
-
Ponto schrieb:
Du solltest ein minimales, lauffähiges Programm posten, dass den Absturz zeigt.
ne das wird mir zu kompliziert
da ist der code mit funktionen noch übersichtlicherhabs jetzt mit normalen funktionen und threads gelöst
-
debian inside schrieb:
danke
warum kann dieser thread der gestartet wurde nicht auf die elemente der klasse zugreifen?
ich bekomm immer speicherzugriffsfehlerHast du die -lpthread dazugelinkt?
-
Headhunter schrieb:
Hast du die -lpthread dazugelinkt?
ja
klappt schon danke
-
#include <pthread.h> class f { public: f() { pthread_create(&p, NULL, &extf, this); } ~f() { pthread_detach(p); } void *run() { //Programm } private: pthread_t p; } extern "C" void *extf(void* This) { return static_cast<f*>(This)->run(); }
[EDIT] hab noch den destruktor mit pthread_detach() hinzugefügt
-
Was passt damit nicht?
(Oder warum postest Du das jetzt?)
-
nman schrieb:
Was passt damit nicht?
(Oder warum postest Du das jetzt?)ich wollte es nur nochmal zusammenhängend posten
und nicht vergessen, -lpthread dazulinken