PPL6-Icon Patrick's Programming Library Version 6.4.21 - Dokumentation
ppl6::CThread Klassenreferenz

Thread-Klasse. Mehr ...

Öffentliche Methoden

 CThread ()
 Konstruktor der Thread-Klasse. Mehr ...
 
virtual ~CThread ()
 Destruktor der Thread-Klasse. Mehr ...
 
void ThreadDeleteOnExit (int flag=1)
 Flag setzen: Klasse beim Beenden löschen. Mehr ...
 
int ThreadGetFlags ()
 Flags des Thread auslesen. Mehr ...
 
ppluint64 ThreadGetID ()
 ThreadID zurückgeben. Mehr ...
 
size_t ThreadGetMinimumStackSize ()
 Minimale Stack-Größe auslesen. Mehr ...
 
int ThreadGetPriority ()
 Priorität des Threads auslesenLiefert die Priorität des Threads zurück. Mehr ...
 
size_t ThreadGetStackSize ()
 Stack-Größe des Threads auslesen. Mehr ...
 
void ThreadIdle ()
 Der Thread gibt seine CPU-Zeit an andere Threads ab. Mehr ...
 
int ThreadIsRunning ()
 Status abfragen: Läuft der Thread? Mehr ...
 
int ThreadIsSuspended ()
 Status abfragen: Schläft der Thread? Mehr ...
 
virtual void ThreadMain (void *param)
 Einsprungfunktion bei Start des Threads. Mehr ...
 
void ThreadResume ()
 Der Thread soll weitermachen. Mehr ...
 
int ThreadSetPriority (int priority)
 Priorität des Threads ändernSetz die Priorität des Threads. Mehr ...
 
int ThreadSetStackSize (size_t size=0)
 Stack-Größe des Threads setzen. Mehr ...
 
int ThreadShouldDeleteOnExit ()
 Interne Funktion. Mehr ...
 
int ThreadShouldStop ()
 Prüfen, ob der Thread beendet werden soll. Mehr ...
 
void ThreadSignalStop ()
 Dem Thread signalisieren, dass er stoppen soll. Mehr ...
 
int ThreadStart (void *param=NULL)
 Der Thread wird gestartet. Mehr ...
 
void ThreadStartUp ()
 Interne Funktion. Mehr ...
 
void ThreadStop ()
 Der Thread wird gestoppt. Mehr ...
 
void ThreadSuspend ()
 Der Thread soll pausieren. Mehr ...
 
void ThreadWaitSuspended (int msec=0)
 Prüfen, ob der Thread schlafen soll. Mehr ...
 

Private Attribute

int deleteMe
 
int flags
 
int IsRunning
 
int IsSuspended
 
int myPriority
 
void * param
 
void * threaddata
 
ppluint64 threadid
 
CMutex threadmutex
 

Ausführliche Beschreibung

Klasse zum Verwalten von Threads.

Klasse zum Starten und Verwalten von Threads.

Siehe auch
Threads
Beispiel:
#include <ppl6.h>
class MyClass : public ppl6::CpplThread
{
public:
virtual void ThreadMain(void *param);
};
void MyClass::ThreadMain(void *param)
{
printf ("Client-Thread wurde gestartet.\n");
while (1) {
if(ThreadShouldStop()) break; // Soll der Thread gestoppt werden?
ppl6::MSleep(100); // 100 Millisekunden warten
}
printf ("Client-Thread wurde beendet.\n");
}
int main(int argc, char **argv)
{
MyClass Job;
printf ("Der Haupthread startet einen Client-Thread...\n");
Job.ThreadStart();
printf ("Der Haupthread wartet nun 5 Sekunden...\n");
printf ("Der Haupthread signalisiert dem Client-Thread, dass er sich beenden soll...\n");
Job.ThreadSignalStop();
printf ("Der Haupthread wartet, bis der Client-Thread beendet ist...\n");
Job.ThreadStop();
printf ("Der Client-Thread wurde erfolgreich gestoppt.\n");
return 0;
}

Beschreibung der Konstruktoren und Destruktoren

ppl6::CThread::CThread ( )

Konstruktor der Thread-Klasse. Es werden interne Variablen allokiert und mit Default-Werten gefüllt.

Siehe auch
Threads
ppl6::CThread::~CThread ( )
virtual

Falls der Thread noch läuft, wird er zunächst gestoppt. Anschließend werden die internen Variablen wieder freigegeben.

Siehe auch
Threads

Dokumentation der Elementfunktionen

void ppl6::CThread::ThreadDeleteOnExit ( int  flag = 1)

Dem Thread wird mitgeteilt, ob er beim beenden seine eigene Klasse löschen soll. Der Default ist, dass der Anwender selbst die Klasse löschen muß.

Parameter
flagkann entweder 1 (Klasse soll automatisch gelöscht werden) oder 0 sein (Klasse nicht löschen).
Siehe auch
CThread::ThreadDeleteOnExit
Threads
int ppl6::CThread::ThreadGetFlags ( )

Mit dieser Funktion können die internen Flags ausgelesen werden.

Rückgabe
Liefert den Wert der internen Flag-Variable zurück
Veraltet:
Diese Funktion ist veraltet und sollte nicht mehr verwendet werden.
Siehe auch
Threads
ppluint64 ppl6::CThread::ThreadGetID ( )

Diese Funktion liefert die interne ID des Threads zurück.

Rückgabe
Liefert einen 64-Bit-Wert mit der Thread-ID zurück.
Siehe auch
Threads
void ppl6::CThread::ThreadIdle ( )
int ppl6::CThread::ThreadIsRunning ( )

Mit dieser Funktion kann überprüft werden, ob der Thread aktuell ausgeführt wird.

Rückgabe
Liefert 1 zurück, wenn der Thread läuft, sonst 0.
Siehe auch
Threads
int ppl6::CThread::ThreadIsSuspended ( )

Mit dieser Funktion kann überprüft werden, ob der Thread aktuell schläft.

Rückgabe
Liefert 1 zurück, wenn der Thread schläft, sonst 0.
Siehe auch
Threads
void ppl6::CThread::ThreadMain ( void *  param)
virtual

ThreadMain ist die Funktion, die nach Starten des Threads aufgerufen wird. Sie muß von der abgeleiteten Klasse überschrieben werden und enthält den vom Thread auszuführenden Code.

Parameter
paramEin optionaler Void-Pointer, der mit der Funktion ThreadStart übergeben wurde.
Rückgabe
Die Funktion liefert keinen Return-Wert, jedoch wird bei Verlassen der Thread automatisch gestoppt. Wurde zuvor die Funktion CThread::ThreadShouldDeleteOnExit() aufgerufen, wird außerdem die Klasse gelöscht.
Siehe auch
Threads
Example
#include <ppl6.h>
class MyClass : public ppl6::CpplThread
{
public:
virtual void ThreadMain(void *param);
};
void MyClass::ThreadMain(void *param)
{
printf ("Client-Thread wurde gestartet.\n");
while (1) {
if(ThreadShouldStop()) break; // Soll der Thread gestoppt werden?
ppl6::MSleep(100); // 100 Millisekunden warten
}
printf ("Client-Thread wurde beendet.\n");
}
int main(int argc, char **argv)
{
MyClass Job;
printf ("Der Haupthread startet einen Client-Thread...\n");
Job.ThreadStart();
printf ("Der Haupthread wartet nun 5 Sekunden...\n");
printf ("Der Haupthread signalisiert dem Client-Thread, dass er sich beenden soll...\n");
Job.ThreadSignalStop();
printf ("Der Haupthread wartet, bis der Client-Thread beendet ist...\n");
Job.ThreadStop();
printf ("Der Client-Thread wurde erfolgreich gestoppt.\n");
return 0;
}

Erneute Implementation in ppl6::CCrontab.

void ppl6::CThread::ThreadResume ( )

Dem Thread wird signalisiert, daß er weitermachen soll.

Noch zu erledigen:
Es wäre besser, wenn diese Funktion vom Betriebssystemseitig erledigt würde.
Siehe auch
CThread::ThreadSuspend
CThread::ThreadWaitSuspended
Threads
int ppl6::CThread::ThreadShouldDeleteOnExit ( )

Diese Funktion wird intern beim beenden des Threads aufgerufen. Liefert sie "true" zurück, wird die Thread-Klasse automatisch mit delete gelöscht.

Rückgabe
Liefert 1 zurück, wenn die Klasse gelöscht werden soll, sonst 0.
Siehe auch
CThread::ThreadDeleteOnExit
Threads
int ppl6::CThread::ThreadShouldStop ( )

Diese Funktion liefert true zurück, wenn der Thread gestoppt werden soll. Dies ist der Fall, wenn vorher die Funktion ThreadStop oder ThreadShouldStop aufgerufen wurde.

Rückgabe
Liefert 1 zurück, wenn der Thread gestoppt werden soll, sonst 0.
Siehe auch
CThread::ThreadStop
CThread::ThreadShouldStop
Threads
void ppl6::CThread::ThreadSignalStop ( )

Dem Thread wird nur signalisiert, dass er stoppen soll.

Siehe auch
CThread::ThreadStop
CThread::ThreadShouldStop
Threads
int ppl6::CThread::ThreadStart ( void *  param = NULL)

ThreadStart startet den Thread und kehrt sofort zur aufrufenden Funktion zurück.

Parameter
paramEin optionaler Pointer auf eine Datenstruktur, der an die ThreadMain-Funktion übergeben wird.
Rückgabe
Konnte der Thread erfolgreich gestartet werden, wird 1 zurückgegeben, bei einem Fehler 0. Der Aufgetretene Fehler kann über die Fehlerfunktionen abgefragt werden.
Siehe auch
CThread::ThreadMain
Threads
void ppl6::CThread::ThreadStartUp ( )

ThreadStartUp wird unmittelbar nach Starten des Threads aufgerufen. Hier werden einige Variablen initialisiert und dann ThreadMain aufgerufen.

Zu beachten
Diese Funktion wird intern verwendet und sollte nicht vom Anwender aufgerufen werden
Siehe auch
CThread::ThreadMain
Threads
void ppl6::CThread::ThreadStop ( )

Dem Thread wird zunächst signalisiert, dass er stoppen soll. Anschließend wartet die Funktion, bis der Thread sich beendet hat.

Zu beachten
Die Thread-Funktion muß in regelmäßigen Abständen mittels der Funktion ThreadShouldStop überprüfen, ob er stoppen soll. Ist dies der Fall, muß sich die Funktion beenden.
Siehe auch
CThread::ThreadSignalStop
CThread::ThreadShouldStop
Threads
void ppl6::CThread::ThreadSuspend ( )

ThreadSuspend setzt das Suspended Flag. Hat nur Auswirkungen, wenn dieses Flag in ThreadMain beachtet wird.

Noch zu erledigen:
Es wäre besser, wenn diese Funktion den Thread Betriebssystemseitig schlafen legen würde, bis ein Resume gegeben wird.
Siehe auch
CThread::ThreadResume
CThread::ThreadWaitSuspended
Threads
void ppl6::CThread::ThreadWaitSuspended ( int  msec = 0)

ThreadWaitSuspended prüft, ob der Thread schlafen (suspend) soll, und wenn ja, wartet sie solange, bis ein unsuspend oder stop signalisiert wird. Der optionale Parameter gibt an, nach wievielen Millisekunden jeweils der Status geprüft werden soll.

Parameter
msecMillisekunden, nach denen jeweils der Status geprüft werden soll. Wird der Parameter nicht angegeben, wartet die Funktion so lange, bis entweder die Funktion ThreadResume, TheadSignalStop, ThreadStop oder der Destruktor der Klasse aufgerufen wird.
Siehe auch
CThread::ThreadSuspend
CThread::ThreadResume
Threads

Dokumentation der Datenelemente

int ppl6::CThread::deleteMe
private
int ppl6::CThread::flags
private
int ppl6::CThread::IsRunning
private
int ppl6::CThread::IsSuspended
private
int ppl6::CThread::myPriority
private
void * ppl6::CThread::param
private
void* ppl6::CThread::threaddata
private
ppluint64 ppl6::CThread::threadid
private
CMutex ppl6::CThread::threadmutex
private

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: