pthread_create mit C++
-
Hi,
folgendes Programm funktioniert bei mir nicht:
void hallo(void *name) { std::cout << "hallo" << std::endl; pthread_exit((void *) 0); } int main() { pthread_t t1; if(pthread_create(&t1, NULL, (void*)&hallo, (void *)"Thread 1") != 0) { std::cerr << "Fehler ..." << std::endl; } return 0; }
Der Compiler ( übrigens gcc version 3.2.3 ) meldet dann folgenen Fehler:
invalid conversion from `void*' to `void*()(void)'
Wenn ich alle Casts entferne gibt er auch eine Fehlermeldung:
Bsp: pthread_create(&t1, NULL, &hallo, (void *)"Thread 1")
Fehler: invalid conversion from `void ()(void)' to ` void*()(void)'
Kann mir da jemand weiterhelfen ???
Danke!
-
die Funktion sollte auch noch void***** zurückgeben, deine tut das aber nicht!
-
void* hallo(void*) { ... return 0; } pthread_create(&t1, 0, hallo, (void*)"Hallo");
-
Danke, habs jetzt geschafft!!!
Aber noch eine andere dämliche Frage:
Ist es auch möglich Memberfunktionen einer Klasse int pthread_create zu verwenden?
Habs schon versucht, ist mir aber nicht gelungen. Kennt jemand ein Beispiel oder einen Link?
PS: Hab schon gegooglet bin aber anscheinend kein guter Sucher.
Danke im Vorraus.
-
pasti schrieb:
Ist es auch möglich Memberfunktionen einer Klasse int pthread_create zu verwenden?
nur statische. Mit dem extra-Parameter an pthread_create kannst du aber das Objekt mitgeben:
class Thread { public: Thread() { pthread_create(..., _thread, this); } void* thread() { ... } private: static void* _thread(void* This) { return ((Thread*)This)->thread(); } };