GlobalObjects
Lade ...
Suche ...
Keine Treffer
EuAPThread Klassenreferenzabstract

Abstrakte Oberklasse für Threads. Mehr ...

#include <EuAPThread.h>

Klassendiagramm für EuAPThread:

Ö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 &)
 
EuAPThreadoperator= (const EuAPThread &)
 

Ausführliche Beschreibung

Abstrakte Oberklasse für Threads.

Die Arbeit des Threads wird in der Methode EuAPThread::work() geleistet, welche von Unterklassen implementiert werden muss.

Zu beachten
Basiert auf 32 Bit POSIX Threads.
Autor
Helmut Jakoby

Dokumentation der Aufzählungstypen

◆ EuPTHREAD_STATUS

Um einen Thread steuern zu können, ist es förderlich, wenn der Arbeitsstatus bekannt ist.

Aufzählungswerte
EuPTHREAD_AT_THE_START 

Der Threads hat noch nicht gearbeitet.

EuPTHREAD_WORKING 

Der Threads ist am arbeiten.

EuPTHREAD_PAUSING 

Der Threads überspringt die Arbeit.

EuPTHREAD_FINISHED 

Der Threads ist mit seiner Arbeit fertig.

Beschreibung der Konstruktoren und Destruktoren

◆ EuAPThread() [1/2]

EuAPThread::EuAPThread ( )

Standard-Konstruktor.

◆ ~EuAPThread()

virtual EuAPThread::~EuAPThread ( )
virtual

Destruktor.

Ausnahmebehandlung
eut::ErrorNExceptionWenn der Thread schon gestartet und noch nicht beendet ist, wird eine Exception geworfen.

◆ EuAPThread() [2/2]

EuAPThread::EuAPThread ( const EuAPThread & )
private

Der Copy-Konstruktor steht nicht zur Verfügung.

Dokumentation der Elementfunktionen

◆ _cleanUp()

static void EuAPThread::_cleanUp ( void * pParam)
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.

Parameter
[in]pParamDer jeweilige abgeleitete EuAPThread.

◆ cancel()

virtual int EuAPThread::cancel ( )
virtual

Beendet den Thread.

Muss vor dem dtor aufgerufen werden, weil ggf. virtuelle Methoden aufgerufen werden. Kann deshalb auch nicht im dtor untergebracht werden!

Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler bzw. ein Info an.
Zu beachten
In dieser Methode wird gewartet (über pthread_join(...)), bis der der Thread beendet ist.

Erneute Implementation in EuEndlessPThread.

◆ cleanUp()

virtual void EuAPThread::cleanUp ( )
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.

Achtung
In den überschriebenen Methoden in Unterklassen sollte diese Methode aufgerufen werden um den Status zu setzen.

◆ join()

virtual int EuAPThread::join ( )
virtual

Wartet bis der Thread fertig ist.

Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ operator=()

EuAPThread & EuAPThread::operator= ( const EuAPThread & )
private

Der Zuweisungsoperator steht nicht zur Verfügung.

◆ start()

virtual int EuAPThread::start ( )
pure virtual

Startet den Thread.

Muss in Unterklassen überschrieben werde, sonst passiert nichts.

Rückgabe
Eine Rückgabe < 0 soll einen Fehler anzeigen.

Implementiert in EuEndlessPThread.

◆ status()

EuAPThread::EuPTHREAD_STATUS EuAPThread::status ( ) const

Liefert den Status des Threads.

Rückgabe
Der Status.

◆ testCancel()

void EuAPThread::testCancel ( )

Prüft, ob der Thread beendet werden soll (pthread_testcancel()).

◆ work()

virtual void EuAPThread::work ( )
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.

Dokumentation der Datenelemente

◆ m_eThreadStatus

EuPTHREAD_STATUS EuAPThread::m_eThreadStatus
protected

Der Arbeitsstatus.

◆ m_strDebugInfo

std::string EuAPThread::m_strDebugInfo
protected

Hier kann für DEBUG-Zwecke etwas reingeschrieben werden.

◆ m_Thread

pthread_t EuAPThread::m_Thread
protected

Der 'echte' pthread.


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