Hallo
Ich möchte Multithreading in C++ Klassen nutzen.
Habe http://openbook.galileocomputing.de/...c76284d6c9eb57 gelesen und folgendes versucht:
Leider funktioniert dies nicht. Laut meiner Internetsuche ist pthread_create eine C Funktion und funktioniert mit C++ Klassen nicht.
Aber es muss doch eine Multithreading Möglichkeit für Klassen in C++ geben.
Wie könnte man dieses kleine Beispiel richtig umsetzen?
P.S. Hier die Ausgabe:
P.S.
Ich möchte Multithreading in C++ Klassen nutzen.
Habe http://openbook.galileocomputing.de/...c76284d6c9eb57 gelesen und folgendes versucht:
Code:
#include <iostream> #include <pthread.h> #include <stdio.h> using namespace std; class helper { private: pthread_t thread; static void *start_help(); public: int id; void start(); }; static void *helper::start_help() { cout << "start_help :-) " << id << endl; } void helper::start() { thread = pthread_create(& thread, NULL, & start_help, NULL); } int main() { cout << "hallo main" << endl; helper x; x.id = 4711; x.start(); return 0; }
Leider funktioniert dies nicht. Laut meiner Internetsuche ist pthread_create eine C Funktion und funktioniert mit C++ Klassen nicht.
Aber es muss doch eine Multithreading Möglichkeit für Klassen in C++ geben.
Wie könnte man dieses kleine Beispiel richtig umsetzen?
P.S. Hier die Ausgabe:
Code:
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf make[1]: Betrete Verzeichnis '/home/user/NetBeansProjects/CppApplication_1' "/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/cppapplication_1 make[2]: Betrete Verzeichnis '/home/user/NetBeansProjects/CppApplication_1' mkdir -p build/Debug/GNU-Linux-x86 rm -f build/Debug/GNU-Linux-x86/main.o.d g++ -pthread -c -g -I/usr/include/c++/4.6.1 -MMD -MP -MF build/Debug/GNU-Linux-x86/main.o.d -o build/Debug/GNU-Linux-x86/main.o main.cpp main.cpp:17:32: Fehler: Elementfunktion »static void* helper::start_help()« kann nicht deklariert werden, statische Bindung zu haben [-fpermissive] main.cpp: In statischer Elementfunktion »static void* helper::start_help()«: main.cpp:13:9: Fehler: ungültige Verwendung des Elementes »helper::id« in statischer Elementfunktion main.cpp:18:34: Fehler: von dieser Stelle main.cpp: In Elementfunktion »void helper::start()«: main.cpp:22:63: Fehler: ungültige Umwandlung von »void (*)()« in »void* (*)(void*)« [-fpermissive] /usr/include/pthread.h:225:12: Fehler: Argument 3 von »int pthread_create(pthread_t*, const pthread_attr_t*, void* (*)(void*), void*)« wird initialisiert [-fpermissive] make[2]: *** [build/Debug/GNU-Linux-x86/main.o] Fehler 1 make[2]: Verlasse Verzeichnis '/home/user/NetBeansProjects/CppApplication_1' make[1]: *** [.build-conf] Fehler 2 make[1]: Verlasse Verzeichnis '/home/user/NetBeansProjects/CppApplication_1' make: *** [.build-impl] Fehler 2 BUILD FEHLGESCHLAGEN. (Ausstiegswert 2, Zeit total: 374ms)
P.S.
Comment