Hakawamu Geschrieben 4. August 2006 Geschrieben 4. August 2006 Ich möchte in c++ Threads verwenden. d.h. ich möchte die selbe >methode< 2 mal laufen haben, dass sie auf die selben daten (eigenschaften des objektes) zugreifen kann. (geht um socket client-server geschichten) die übliche c-variante mit posix-threads funktioniert leider nicht. der g++-4.0.2-compiler liefert mir immer folgende fehlermeldung: ManageSocket.cpp:78: error: argument of type 'void* (ManageSocket:(void*)' does not match 'void* (*)(void*)' scheint daher zu kommen, dass er keine void*-funktion bekommst sondern eine "void*-methode". hat jemand eine idee? Zitieren
setiII Geschrieben 4. August 2006 Geschrieben 4. August 2006 Ja also erstmal denk cih solltest du nen Ausschnitt aus deinem Quellcode Pasten, aber vermutlich entspricht deine Theradfunktion nicht den anforderungen Zitieren
Klotzkopp Geschrieben 4. August 2006 Geschrieben 4. August 2006 scheint daher zu kommen, dass er keine void*-funktion bekommst sondern eine "void*-methode".Richtig. Das wird dir aber mit jeder anderen Thread-Bibliothek auch passieren. Nur globale Funktionen und statische Methoden eignen sich als Threadfunktionen. Nichtstatische Methoden brauchen immer den Zeiger auf die Instanz (this), der verdeckt übergeben wird. Zitieren
Hakawamu Geschrieben 7. August 2006 Autor Geschrieben 7. August 2006 also im moment hab ich's so: deklaration: class ManageSocket { public: void *handleClient(void *client); ... }; definition: void *ManageSocket::handleClient(void *client) { return NULL; } aufruf: pthread_create(&tid, NULL, handleClient, (void*)&client); Zitieren
Hakawamu Geschrieben 7. August 2006 Autor Geschrieben 7. August 2006 so, hab die methode jetzt als static deklariert. jetzt gehts =) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.