Announcement

Collapse
No announcement yet.

Multithreading in Klassen

Collapse
This topic is closed.
X
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Multithreading in Klassen

    Hallo

    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.

  • #2
    http://forum.chip.de/c-c/multithread...n-1584331.html

    http://www.computerbase.de/forum/sho...d.php?t=991346

    geschlossen
    Christian

    Comment

    Working...
    X