Anzeige:
Ergebnis 1 bis 5 von 5

Thema: PThread --> Kopf --> Wand

  1. #1
    Registrierter Benutzer
    Registriert seit
    14.05.2010
    Beiträge
    3

    Question PThread --> Kopf --> Wand

    hallo erstmal

    Ich habe ein kleines Problem. Ich würde gerne pthread innerhalb einer c++ Klasse einsetzten, was mir aber nicht gelingen will.

    Fehler:
    Code:
    hanf_thread.cpp: In member function ‘void hthread::start_thread(void*)’:
    hanf_thread.cpp:6: error: invalid conversion from ‘void*’ to ‘void* (*)(void*)’
    hanf_thread.cpp:6: error:   initializing argument 3 of ‘int pthread_create(pthread_t*, const pthread_attr_t*, void* (*)(void*), void*)’
    Wäre nett, wenn mir jemand da helfen könnte(code gibs erst ma nich, weil ich noch gar nicht weiß, wie ich pthread überhaupt benutzen muss)
    MFG Hanf
    Geändert von hanfgeist (16-05-2010 um 14:30 Uhr) Grund: Deutsch ist eine schwierige Sprache :D

  2. #2
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567
    Hi und willkommen im Forum
    Zitat Zitat von hanfgeist Beitrag anzeigen
    h(code gibs erst ma nich, weil ich noch gar nicht weiß, wie ich pthread überhaupt muss)
    Naja, es würde die Fehlerbehebung deutlich einfacher machen, wenn du etwas Code posten könntest.
    C und C++

  3. #3
    Registrierter Benutzer
    Registriert seit
    14.05.2010
    Beiträge
    3
    Nunja, was ich versuche ist, eine Klasse zu schreiben die einen Thread startet. Das ist aber nicht mein Problem. Mir ist wohl einfach noch nicht die Funktionsweise von pthread klar.

    hanf_thread.h
    Code:
    #include <pthread.h>
    
    using namespace std;
    
    #ifndef HANF_THREAD_H
    #define HANF_THREAD_H
    
    class hthread {
        public:
            void start_thread(void *funktionC);
        private:
            pthread_t h_thread;
            bool running;
    };
    
    #endif
    hanf_thread.cpp
    Code:
    #include "hanf_thread.h"
    
    void hthread::start_thread(void *funktionC) {
        if (running) return;
        
        pthread_create( &h_thread, NULL, funktionC, NULL);
        
        running = true;
        
        return;
    }
    Von dieser Klasse erzeugt eine andere Klasse ein Objekt, denn ich will einen neuen Thread starten, während das Hauptprogramm sich mit anderen Dingen beschäftigt.

    ein kleiner Schnipsel aus dieser Klasse:
    Code:
    [...]
    void gurke::gurken_bearbeiten() {
        cout<<"child(vector): ";
        for(int i = 0; i < gurken.size(); i++) { 
            if (i > 0) cout<<" ";
            cout<<gurken[i];
        }
        cout<<endl;
        cout<<"child(string): "<<sorten<<endl;
        gurken.push_back("senf");
        sorten += " schoko";
        sleep(10);
    }
    
    void gurke::start() {
        gurken_threads.start_thread(&gurke::gurken_bearbeiten);
        
        return;
    }

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Eine Methode als C-Callback zu benutzen ist beim ersten Mal nicht so offensichtlich.

    Siehe http://www.mrunix.de/forums/showthread.php?t=38966

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer
    Registriert seit
    14.05.2010
    Beiträge
    3
    danke erstmal dafür
    hmm, also das klingt interessant. Ich hab in zwischen folgendes gefunden und es auch erstmal so gemacht: http://ubuntuforums.org/showpost.php...11&postcount=2

    Beides sieht auf den zweiten Blick ähnlich aus und das Prinzip scheint gleich zu sein. Ich hatte ursprünglich vor eine Klasse zu schreiben, welche für mich einen Thread startet. Ich werds mal ausprobieren

    MFG Hanf

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •