vdr
2.0.5
|
#include <thread.h>
Public Member Functions | |
cThread (const char *Description=NULL, bool LowPriority=false) | |
virtual | ~cThread () |
void | SetDescription (const char *Description,...) __attribute__((format(printf |
void bool | Start (void) |
bool | Active (void) |
Static Public Member Functions | |
static tThreadId | ThreadId (void) |
static tThreadId | IsMainThread (void) |
static void | SetMainThreadId (void) |
Protected Member Functions | |
void | SetPriority (int Priority) |
void | SetIOPriority (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 |
bool | lowPriority |
Static Private Attributes | |
static tThreadId | mainThreadId = 0 |
Friends | |
class | cThreadLock |
cThread::cThread | ( | const char * | Description = NULL , |
bool | LowPriority = false |
||
) |
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. LowPriority can be set to true to make this thread run at a lower priority.
Definition at line 207 of file thread.c.
References active, childThreadId, childTid, description, lowPriority, running, and SetDescription().
|
virtual |
Definition at line 218 of file thread.c.
References Cancel(), and description.
|
protectedpure 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 cIndexFileGenerator, cEpgDataWriter, cTSBuffer, cDevice, cDvbTuner, cCuttingThread, cDvbPlayer, cEpgDataReader, cTrueColorDemo, cRecordings, cKbdRemote, cNonBlockingFileReader, cCiAdapter, cRemoveDeletedRecordingsThread, cDvbSubtitleConverter, cRcuRemote, cCopyingThread, cRecorder, cSectionHandler, and cLircRemote.
Referenced by StartThread().
bool cThread::Active | ( | void | ) |
Checks whether the thread is still alive.
Definition at line 298 of file thread.c.
References active, childTid, LOG_ERROR, and running.
Referenced by cFileTransfer::Active(), cCutter::Active(), Cancel(), cSchedules::Cleanup(), GenerateIndex(), RemoveDeletedRecordings(), cFileTransfer::Stop(), and cCutter::Stop().
|
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 323 of file thread.c.
References active, Active(), childThreadId, childTid, description, esyslog, running, and cCondWait::SleepMs().
Referenced by cRecorder::Activate(), cDvbPlayer::Activate(), cDevice::Detach(), cTrueColorDemo::ProcessKey(), cCiAdapter::~cCiAdapter(), cCopyingThread::~cCopyingThread(), cCuttingThread::~cCuttingThread(), cDvbCiAdapter::~cDvbCiAdapter(), cDvbSubtitleConverter::~cDvbSubtitleConverter(), cDvbTuner::~cDvbTuner(), cIndexFileGenerator::~cIndexFileGenerator(), cKbdRemote::~cKbdRemote(), cLircRemote::~cLircRemote(), cNonBlockingFileReader::~cNonBlockingFileReader(), cRcuRemote::~cRcuRemote(), cRecordings::~cRecordings(), cSectionHandler::~cSectionHandler(), ~cThread(), cTrueColorDemo::~cTrueColorDemo(), and cTSBuffer::~cTSBuffer().
|
inlinestatic |
Definition at line 125 of file thread.h.
References mainThreadId, and ThreadId().
Referenced by cPlugin::CacheDirectory(), cPlugin::ConfigDirectory(), cSkins::Message(), cSkins::ProcessQueuedMessages(), cSkins::QueueMessage(), cPlugin::ResourceDirectory(), and cDvbPlayer::SetAudioTrack().
|
inlineprotected |
Definition at line 92 of file thread.h.
References cMutex::Lock(), and mutex.
Referenced by cSectionHandler::Action(), cNonBlockingFileReader::Action(), cDevice::Action(), cSectionHandler::Add(), cSectionHandler::Attach(), cDevice::AttachReceiver(), cNonBlockingFileReader::Clear(), cSectionHandler::Del(), cSectionHandler::Detach(), cDevice::Detach(), cThreadLock::Lock(), cRecordings::Refresh(), cNonBlockingFileReader::Request(), cDvbSubtitleConverter::Reset(), cRecordings::ScanVideoDir(), cSectionHandler::SetChannel(), and cSectionHandler::SetStatus().
|
inlineprotected |
Returns false if a derived cThread object shall leave its Action() function.
Definition at line 99 of file thread.h.
References running.
Referenced by cLircRemote::Action(), cSectionHandler::Action(), cRecorder::Action(), cCopyingThread::Action(), cRcuRemote::Action(), cDvbSubtitleConverter::Action(), cCiAdapter::Action(), cNonBlockingFileReader::Action(), cKbdRemote::Action(), cTrueColorDemo::Action(), cDvbPlayer::Action(), cCuttingThread::Action(), cDvbTuner::Action(), cDevice::Action(), cTSBuffer::Action(), cIndexFileGenerator::Action(), cDvbPlayer::Active(), cCuttingThread::ProcessSequence(), cRecorder::Receive(), and cRecordings::ScanVideoDir().
void cThread::SetDescription | ( | const char * | Description, |
... | |||
) |
Definition at line 236 of file thread.c.
References description, and cString::vsprintf().
Referenced by cDevice::cDevice(), cDvbCiAdapter::cDvbCiAdapter(), cDvbTuner::cDvbTuner(), cThread(), and cTSBuffer::cTSBuffer().
|
protected |
Definition at line 230 of file thread.c.
References LOG_ERROR.
Referenced by cCopyingThread::Action(), and StartThread().
|
static |
Definition at line 346 of file thread.c.
References esyslog, mainThreadId, and ThreadId().
Referenced by main().
|
protected |
Definition at line 224 of file thread.c.
References LOG_ERROR.
Referenced by cCopyingThread::Action(), and StartThread().
bool cThread::Start | ( | void | ) |
Actually starts the thread.
If the thread is already running, nothing happens.
Definition at line 273 of file thread.c.
References active, childTid, cTimeMs::Elapsed(), LOG_ERROR, running, cCondWait::SleepMs(), StartThread(), THREAD_STOP_SLEEP, and THREAD_STOP_TIMEOUT.
Referenced by cTrueColorDemo::Action(), cRecorder::Activate(), cDvbPlayer::Activate(), cDevice::AttachReceiver(), cCopyingThread::cCopyingThread(), cCuttingThread::cCuttingThread(), cDvbCiAdapter::cDvbCiAdapter(), cDvbSubtitleConverter::cDvbSubtitleConverter(), cDvbTuner::cDvbTuner(), cIndexFileGenerator::cIndexFileGenerator(), cKbdRemote::cKbdRemote(), cSchedules::Cleanup(), cLircRemote::cLircRemote(), cNonBlockingFileReader::cNonBlockingFileReader(), cRcuRemote::cRcuRemote(), cSectionHandler::cSectionHandler(), cTSBuffer::cTSBuffer(), main(), cDevice::PlayPesPacket(), RemoveDeletedRecordings(), cTrueColorDemo::Show(), and cRecordings::Update().
|
staticprivate |
Definition at line 248 of file thread.c.
References Action(), active, childThreadId, description, dsyslog, esyslog, lowPriority, running, SetIOPriority(), SetPriority(), and ThreadId().
Referenced by Start().
|
static |
Definition at line 341 of file thread.c.
Referenced by cIoThrottle::Activate(), cSkinQueuedMessage::cSkinQueuedMessage(), cRingBufferLinear::Get(), IsMainThread(), main(), cSkins::QueueMessage(), cIoThrottle::Release(), SetMainThreadId(), StartThread(), and syslog_with_tid().
|
inlineprotected |
Definition at line 93 of file thread.h.
References mutex, and cMutex::Unlock().
Referenced by cSectionHandler::Action(), cNonBlockingFileReader::Action(), cDevice::Action(), cSectionHandler::Add(), cSectionHandler::Attach(), cDevice::AttachReceiver(), cNonBlockingFileReader::Clear(), cSectionHandler::Del(), cSectionHandler::Detach(), cDevice::Detach(), cRecordings::Refresh(), cNonBlockingFileReader::Request(), cDvbSubtitleConverter::Reset(), cRecordings::ScanVideoDir(), cSectionHandler::SetChannel(), cSectionHandler::SetStatus(), and cThreadLock::~cThreadLock().
|
friend |
|
private |
|
private |
Definition at line 83 of file thread.h.
Referenced by Cancel(), cThread(), and StartThread().
|
private |
|
private |
Definition at line 85 of file thread.h.
Referenced by Cancel(), cDevice::ClrAvailableTracks(), cThread(), cDevice::SetAvailableTrack(), SetDescription(), StartThread(), and ~cThread().
|
private |
Definition at line 86 of file thread.h.
Referenced by cThread(), and StartThread().
|
staticprivate |
Definition at line 87 of file thread.h.
Referenced by IsMainThread(), and SetMainThreadId().
|
private |
|
private |