GlobalObjects
|
Abstrakte Oberklasse für Threads. Mehr ...
#include <EuAPThread.h>
Öffentliche Typen | |
enum | EuPTHREAD_STATUS { EuPTHREAD_AT_THE_START , EuPTHREAD_WORKING , EuPTHREAD_PAUSING , EuPTHREAD_FINISHED } |
Öffentliche Methoden | |
EuAPThread () | |
virtual | ~EuAPThread () |
virtual int | cancel () |
virtual int | join () |
virtual int | start ()=0 |
EuAPThread::EuPTHREAD_STATUS | status () const |
void | testCancel () |
Geschützte Methoden | |
virtual void | cleanUp () |
virtual void | work ()=0 |
Geschützte, statische Methoden | |
static void | _cleanUp (void *pParam) |
Geschützte Attribute | |
EuPTHREAD_STATUS | m_eThreadStatus |
std::string | m_strDebugInfo |
pthread_t | m_Thread |
Private Methoden | |
EuAPThread (const EuAPThread &) | |
EuAPThread & | operator= (const EuAPThread &) |
Abstrakte Oberklasse für Threads.
Die Arbeit des Threads wird in der Methode EuAPThread::work() geleistet, welche von Unterklassen implementiert werden muss.
Um einen Thread steuern zu können, ist es förderlich, wenn der Arbeitsstatus bekannt ist.
EuAPThread::EuAPThread | ( | ) |
Standard-Konstruktor.
|
virtual |
Destruktor.
eut::ErrorNException | Wenn der Thread schon gestartet und noch nicht beendet ist, wird eine Exception geworfen. |
|
private |
Der Copy-Konstruktor steht nicht zur Verfügung.
|
staticprotected |
Diese Methode wird in Unterklassen in Methode threadWork an Funktion pthread_cleanup_push übergeben, welche eine Funktion (diese hier) und einen void-Parameter zum 'durchreichen' (in diesem Fall den jeweiligen abgeleiteten EuAPThread) erwartet.
Dadurch wird bei Beendigung des pthreads diese Methode aufgerufen mit dem jeweiligen Thread als pParam (ist ja der abgeleitete EuAPThread).
Diese statische Methode ruft nun ihrerseits die dynamische Methode cleanUp des abgeleitete EuAPThread (übergeben in pParam) auf, welche notwendige Aufräumarbeiten durchführen kann.
[in] | pParam | Der jeweilige abgeleitete EuAPThread. |
|
virtual |
Beendet den Thread.
Muss vor dem dtor aufgerufen werden, weil ggf. virtuelle Methoden aufgerufen werden. Kann deshalb auch nicht im dtor untergebracht werden!
Erneute Implementation in EuEndlessPThread.
|
protectedvirtual |
Wenn notwendige Aufräumarbeiten durchzuführen sind, kann diese Methode in den jeweiligen Unterklassen überschrieben werden; sie wird automatisch aufgerufen.
Hier wird m_eThreadStatus auf EuPTHREAD_FINISHED gesetzt.
|
virtual |
Wartet bis der Thread fertig ist.
|
private |
Der Zuweisungsoperator steht nicht zur Verfügung.
|
pure virtual |
Startet den Thread.
Muss in Unterklassen überschrieben werde, sonst passiert nichts.
Implementiert in EuEndlessPThread.
EuAPThread::EuPTHREAD_STATUS EuAPThread::status | ( | ) | const |
Liefert den Status des Threads.
void EuAPThread::testCancel | ( | ) |
Prüft, ob der Thread beendet werden soll (pthread_testcancel()).
|
protectedpure virtual |
Diese Methode wird vom Thread ausgeführt und muß in Unterklassen überschrieben werden.
Dort sollte die Methode testCancel() eingefügt sein, um einen Threadabbruch zu gewährleisten.
|
protected |
Der Arbeitsstatus.
|
protected |
Hier kann für DEBUG-Zwecke etwas reingeschrieben werden.
|
protected |
Der 'echte' pthread.