cThread Class Reference

#include <thread.h>

Inheritance diagram for cThread:

Inheritance graph
Collaboration diagram for cThread:

Collaboration graph

List of all members.

Public Member Functions

 cThread (const char *Description=NULL)
virtual ~cThread ()
void SetDescription (const char *Description,...) __attribute__((format(printf
void bool Start (void)
bool Active (void)
 Checks whether the thread is still alive.

Static Public Member Functions

static tThreadId ThreadId (void)
static tThreadId IsMainThread (void)
static void SetMainThreadId (void)

Protected Member Functions

void SetPriority (int Priority)
void Lock (void)
void Unlock (void)
virtual void Action (void)=0
bool Running (void)
void Cancel (int WaitSeconds=0)

Static Private Member Functions

static void * StartThread (cThread *Thread)

Private Attributes

bool active
bool running
pthread_t childTid
tThreadId childThreadId
cMutex mutex
char * description

Static Private Attributes

static tThreadId mainThreadId = 0


class cThreadLock

Detailed Description

Definition at line 77 of file thread.h.

Constructor & Destructor Documentation

cThread::cThread ( const char *  Description = NULL  ) 

Creates a new thread. If Description is present, a log file entry will be made when the thread starts and stops. The Start() function must be called to actually start the thread.

Definition at line 207 of file thread.c.

References active, childThreadId, childTid, description, running, and SetDescription().

Here is the call graph for this function:

cThread::~cThread (  )  [virtual]

Definition at line 217 of file thread.c.

References Cancel(), and description.

Here is the call graph for this function:

Member Function Documentation

void * cThread::StartThread ( cThread Thread  )  [static, private]

Definition at line 241 of file thread.c.

References Action(), active, childThreadId, description, dsyslog, esyslog, running, and ThreadId().

Referenced by Start().

Here is the call graph for this function:

void cThread::SetPriority ( int  Priority  )  [protected]

Definition at line 223 of file thread.c.

References LOG_ERROR.

Referenced by cSectionHandler::Action(), and cRemoveDeletedRecordingsThread::Action().

void cThread::Lock ( void   )  [inline, protected]

void cThread::Unlock ( void   )  [inline, protected]

virtual void cThread::Action ( void   )  [protected, pure virtual]

A derived cThread class must implement the code it wants to execute as a separate thread in this function. If this is a loop, it must check Running() repeatedly to see whether it's time to stop.

Implemented in cCiAdapter, cCuttingThread, cDevice, cTSBuffer, cDvbTuner, cNonBlockingFileReader, cDvbPlayer, cDvbSubtitleConverter, cLircRemote, cRcuRemote, cRecorder, cRemoveDeletedRecordingsThread, cRecordings, cKbdRemote, and cSectionHandler.

Referenced by StartThread().

bool cThread::Running ( void   )  [inline, protected]

void cThread::Cancel ( int  WaitSeconds = 0  )  [protected]

Cancels the thread by first setting 'running' to false, so that the Action() loop can finish in an orderly fashion and then waiting up to WaitSeconds seconds for the thread to actually end. If the thread doesn't end by itself, it is killed. If WaitSeconds is -1, only 'running' is set to false and Cancel() returns immediately, without killing the thread.

Definition at line 312 of file thread.c.

References Active(), active, childThreadId, childTid, description, esyslog, running, and cCondWait::SleepMs().

Referenced by cRecorder::Activate(), cDvbPlayer::Activate(), cDevice::Detach(), cCiAdapter::~cCiAdapter(), cCuttingThread::~cCuttingThread(), cDvbCiAdapter::~cDvbCiAdapter(), cDvbSubtitleConverter::~cDvbSubtitleConverter(), cDvbTuner::~cDvbTuner(), cKbdRemote::~cKbdRemote(), cLircRemote::~cLircRemote(), cNonBlockingFileReader::~cNonBlockingFileReader(), cRcuRemote::~cRcuRemote(), cRecordings::~cRecordings(), cSectionHandler::~cSectionHandler(), ~cThread(), and cTSBuffer::~cTSBuffer().

Here is the call graph for this function:

void cThread::SetDescription ( const char *  Description,

Definition at line 229 of file thread.c.

References description, and cString::sprintf().

Referenced by cDevice::cDevice(), cDvbCiAdapter::cDvbCiAdapter(), cDvbTuner::cDvbTuner(), cThread(), and cTSBuffer::cTSBuffer().

Here is the call graph for this function:

bool cThread::Start ( void   ) 

bool cThread::Active ( void   ) 

Checks whether the thread is still alive.

Reimplemented in cDvbPlayer.

Definition at line 287 of file thread.c.

References active, childTid, LOG_ERROR, and running.

Referenced by cCutter::Active(), Cancel(), RemoveDeletedRecordings(), and cCutter::Stop().

tThreadId cThread::ThreadId ( void   )  [static]

static tThreadId cThread::IsMainThread ( void   )  [inline, static]

Definition at line 121 of file thread.h.

References mainThreadId, and ThreadId().

Referenced by cPlugin::ConfigDirectory(), cSkins::ProcessQueuedMessages(), and cSkins::QueueMessage().

Here is the call graph for this function:

void cThread::SetMainThreadId ( void   )  [static]

Definition at line 335 of file thread.c.

References esyslog, mainThreadId, and ThreadId().

Referenced by main().

Here is the call graph for this function:

Friends And Related Function Documentation

friend class cThreadLock [friend]

Definition at line 78 of file thread.h.

Member Data Documentation

bool cThread::active [private]

Definition at line 80 of file thread.h.

Referenced by Active(), Cancel(), cThread(), Start(), and StartThread().

bool cThread::running [private]

Definition at line 81 of file thread.h.

Referenced by Active(), Cancel(), cThread(), Running(), Start(), and StartThread().

pthread_t cThread::childTid [private]

Definition at line 82 of file thread.h.

Referenced by Active(), Cancel(), cThread(), and Start().

Definition at line 83 of file thread.h.

Referenced by Cancel(), cThread(), and StartThread().

Reimplemented in cDvbTuner.

Definition at line 84 of file thread.h.

Referenced by Lock(), and Unlock().

char* cThread::description [private]

tThreadId cThread::mainThreadId = 0 [static, private]

Definition at line 86 of file thread.h.

Referenced by IsMainThread(), and SetMainThreadId().

The documentation for this class was generated from the following files:

Generated on Tue Jan 13 14:33:05 2009 for VDR by  doxygen 1.5.6