|
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.
Wird benutzt von EuEndlessPThread() und operator=().
|
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.
Benutzt EuEndlessPThread().
|
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.
Benutzt EuEndlessPThread().
| 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.