Jens Hibbeler
Mitglied
Hallo Group,
ich (C++ newbie) habe folgendes Problem:
Ich habe eine Basisklasse von der viele spezielle Klassen abgeleitet werden.
In der Basisklasse soll eine Methode ausgeführt werden, die dann beliebige Methoden in beliebigen abgeleiteten Klassen als Thread ausführen kann. Die sollte so geschehen, damit sich nicht jeder Programmierer um das Aufrufen eines Threads kümmern muss.
Um Threads zu starten nutze ich die pthread-Library. Beispiel:
Wie kann ich das Aufrufen des Threads in eine Basisklasse verlagern? Ich müsste in der Basisklasse doch so etwas definieren:
Kann ich den Thread überhaupt so starten? Kann ich die Adresse von einem Objekt + Methode übergeben? Habe das schon mehrmals (ohne Erfolg) probiert.
Es würde mich freuen, wenn es eine Lösung dafür gäbe. Es kann ja nicht sein, dass sich in einem Programm jeder Programmierer um das Aufrufen eines Threads selbst kümmern muss.
Viele Grüße,
Jens Hibbeler
ich (C++ newbie) habe folgendes Problem:
Ich habe eine Basisklasse von der viele spezielle Klassen abgeleitet werden.
In der Basisklasse soll eine Methode ausgeführt werden, die dann beliebige Methoden in beliebigen abgeleiteten Klassen als Thread ausführen kann. Die sollte so geschehen, damit sich nicht jeder Programmierer um das Aufrufen eines Threads kümmern muss.
Um Threads zu starten nutze ich die pthread-Library. Beispiel:
Code:
//Thread starten
pthread_t threads[1];
pthread_create(&threads[0], NULL, Threadstart, this);
//pthread kann nur diese Methodenköpfe (void* Methodenname (void *This)) adressieren
void * Threadstart(void *This)
{
//Im Thread ausgeführte Methode
bestandsAnfrage(4);
}
Wie kann ich das Aufrufen des Threads in eine Basisklasse verlagern? Ich müsste in der Basisklasse doch so etwas definieren:
Code:
void * starteThreadVonSubKlasse(Aufzurufendes Objekt, Aufzurufende Methode)
{
pthread_create(&threads[0], NULL, Aufzurufendes Objekt -> Aufzurufende Methode, this);
}
Kann ich den Thread überhaupt so starten? Kann ich die Adresse von einem Objekt + Methode übergeben? Habe das schon mehrmals (ohne Erfolg) probiert.
Es würde mich freuen, wenn es eine Lösung dafür gäbe. Es kann ja nicht sein, dass sich in einem Programm jeder Programmierer um das Aufrufen eines Threads selbst kümmern muss.
Viele Grüße,
Jens Hibbeler