GlobalObjects
|
Basisklasse für einen Thread der seine Arbeit endlos bis zum Abbruch ausführt. Mehr ...
#include <EuEndlessPThread.h>
Öffentliche Typen | |
enum | EuPTHREAD_ORDER { EuPTHREAD_WORK , EuPTHREAD_TAKE_A_BREAK , EuPTHREAD_END } |
Öffentliche Typen geerbt von EuAPThread | |
enum | EuPTHREAD_STATUS { EuPTHREAD_AT_THE_START , EuPTHREAD_WORKING , EuPTHREAD_PAUSING , EuPTHREAD_FINISHED } |
Öffentliche Methoden | |
EuEndlessPThread () | |
virtual | ~EuEndlessPThread () |
virtual int | cancel () |
virtual int | finishBreak () |
int | getBreakCounter () |
void | setExclusiveAccess () |
void | signalInput () |
virtual int | start () |
virtual int | takeABreak () |
void | unsetExclusiveAccess () |
void | waitForInput () |
Öffentliche Methoden geerbt von EuAPThread | |
EuAPThread () | |
virtual | ~EuAPThread () |
virtual int | join () |
EuAPThread::EuPTHREAD_STATUS | status () const |
void | testCancel () |
Geschützte Methoden | |
void | takeABreakWait () |
Geschützte Methoden geerbt von EuAPThread | |
virtual void | cleanUp () |
virtual void | work ()=0 |
Geschützte, statische Methoden | |
static void * | threadWork (void *pParam) |
Geschützte, statische Methoden geerbt von EuAPThread | |
static void | _cleanUp (void *pParam) |
Geschützte Attribute | |
bool | m_bInExluzivAccess |
pthread_cond_t | m_BreakCond |
EuPTHREAD_ORDER | m_eThreadOrder |
pthread_mutex_t | m_ExclusiveAccessMutex |
int | m_iBreakCounter |
sem_t | m_Semaphore |
Geschützte Attribute geerbt von EuAPThread | |
EuPTHREAD_STATUS | m_eThreadStatus |
std::string | m_strDebugInfo |
pthread_t | m_Thread |
Private Methoden | |
EuEndlessPThread (const EuEndlessPThread &) | |
EuEndlessPThread & | operator= (const EuEndlessPThread &) |
Basisklasse für einen Thread der seine Arbeit endlos bis zum Abbruch ausführt.
In Unterklassen muß lediglich die virtuale Methode EuAPThread::work() überschrieben werden.
Einem abgeleiteten EuEndlessPThread können nach dem Start Befehle übergeben werden.
Aufzählungswerte | |
---|---|
EuPTHREAD_WORK | Thread soll arbeiten. |
EuPTHREAD_TAKE_A_BREAK | Thread soll das Arbeiten überspringen (nicht arbeiten, aber auch nicht abbrechen). |
EuPTHREAD_END | Thread soll sich beenden. |
EuEndlessPThread::EuEndlessPThread | ( | ) |
Standard-Konstruktor.
|
virtual |
Der Destruktor lässt m_ExclusiveAccessMutex, m_BreakCond und m_Semaphore aus dem Speicher entfernen.
Siehe auch die Beschreibung der Oberklassen.
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.
|
virtual |
Beendet den Thread.
Erneute Implementation von EuAPThread.
|
virtual |
Beendet die Bearbeitungs-Pause ( wenn m_iBreakCounter == 0 ). Muss über takeABreak() initiiert worden sein.
int EuEndlessPThread::getBreakCounter | ( | ) |
Liefert m_iBreakCounter.
|
private |
Der Zuweisungsoperator steht nicht zur Verfügung.
void EuEndlessPThread::setExclusiveAccess | ( | ) |
Setzt eine Sperre seines Mutex. Muss mittels unsetExclusiveAccess() wieder aufgehoben werden.
void EuEndlessPThread::signalInput | ( | ) |
Beendet das Warten ohne Tätigkeit, welches durch waitForInput() initiiert wurde.
|
virtual |
Startet den Thread.
Implementiert EuAPThread.
|
virtual |
Setzt m_eThreadOrder auf EuPTHREAD_TAKE_A_BREAK. Diese methode kann genutzt werden, um die Bearbeitung zu überspringen bzw. auszusparen.
Muss durch finishBreak() beendet werden.
|
protected |
Wird in threadWork( void * pParam ) zum Pausieren benötigt.
|
staticprotected |
Diese Methode wird in start() benötigt.
[in] | pParam | Damit diese statische Methode auf die Methode EuAPThread::work() zugreifen kann, wird in pParam eine Referenz auf die jeweilige Instanz auf ein Objekt vom Typ EuEndlessPThread bzw. Unterklasse erwartet. |
void EuEndlessPThread::unsetExclusiveAccess | ( | ) |
Hebt eine Sperre seines Mutex auf, wenn durch setExclusiveAccess() gesetzt.
void EuEndlessPThread::waitForInput | ( | ) |
Läßt den Thread an definierter Position ohne Tätigkeit warten. Muss durch signalInput() wieder beendet werden.
|
protected |
Um einen Mutex zu setzten wird dieses Attribut benötigt.
|
protected |
Dieses Attribut ist notwendig, um den Thread pausieren lassen zu können.
|
protected |
Einem Thread kann ein Befehl gegeben werden der hier gesetzt wird.
|
protected |
Dieser Thraed braucht einen Mutex, um lokale Variablen zu schützen.
|
protected |
Wenn ein EuEndlessPThread pausieren soll, wird dieser Zähler incrementiert und beim Aufwecken wieder decrementiert. Bei 0 wird der Thread wieder aufgeweckt.
Damit wird ein geschachteltes schlafen legen und auwecken ermöglicht.
|
protected |
Kann genutzt werden, damit der Thread nicht im Leerlauf arbeitet. Das ist nicht mit dem Pausieren zu vergleichen, wo der Thread nur die Verarbeitung auslässt.