Open Lighting Architecture
Latest Git
|
Signals and threads don't play nicely together. Consider the following:
The recommended way to deal with this is to run a separate thread, whose sole purpose is to wait for signals. See section 12.8 of APUE.
To avoid this we do the following:
Public Types | |
typedef ola::Callback0< void > | SignalHandler |
Public Member Functions | |
bool | InstallSignalHandler (int signal, SignalHandler *handler) |
Install a signal handler for the given signal. More... | |
Public Member Functions inherited from ola::thread::Thread | |
Thread (const Options &options=Options()) | |
Create a new thread with the specified thread options. More... | |
virtual | ~Thread () |
Destructor. | |
virtual bool | Start () |
Start the thread and wait for the thread to be running. More... | |
virtual bool | FastStart () |
Start the thread and return immediately. More... | |
virtual bool | Join (void *ptr=NULL) |
Join this thread. More... | |
bool | IsRunning () |
Check if the thread is running. More... | |
ThreadId | Id () const |
Return the thread id. More... | |
std::string | Name () const |
Return the thread name. More... | |
Protected Member Functions | |
void * | Run () |
Entry point into the thread. | |
Additional Inherited Members | |
Static Public Member Functions inherited from ola::thread::Thread | |
static ThreadId | Self () |
Returns the current thread's id. More... | |
bool ola::thread::SignalThread::InstallSignalHandler | ( | int | signal, |
SignalHandler * | handler | ||
) |
Install a signal handler for the given signal.
This can't be called once the thread has stared.