ifw-ccf 5.0.2
|
IFW CTD Multiprocessing Toolkit Thread base class. More...
#include <thread.hpp>
Public Types | |
enum | ThreadExecControl { THREAD_EXEC_STOPPED = 1 , THREAD_EXEC_RUNNING , THREAD_EXEC_PAUSED } |
Thread execution control/status. More... | |
Public Member Functions | |
Thread (const std::string &thread_name, MessageBus &message_bus, const double period=0.1) | |
Constructor method, setting up the internal members. | |
virtual | ~Thread () |
void | SetPriority (const int prio=-1) |
If invoked, it will run the thread in real-time mode with the given priority [0; 99]. | |
std::string | GetName () const |
Return the thread Name. | |
void | Run () |
Method to invoke the user provided business logic of the thread. The method executes internally a loop. | |
virtual void | UserLogic () |
User provided business logic. The UserLogic method need not execute an internal loop. It is taken care of by the Control() method. Instead the UserLogic() method should (normally) execute it business logic, and return control to the Control() method, which will take of the thread management. | |
void | Start () |
Start the thread execution. | |
void | Stop () |
Stop the thread execution. | |
void | Pause () |
Pause the thread execution. | |
void | Continue () |
Continue a paused thread execution. | |
double | GetDrift () const |
bool | GetExecFlag () |
Check the Thread Execution Flag. The Thread Execution Flag shall be called regularly in the thread, at least during every internal cycle (of LogicUser()). The behavior is as follows: THREAD_EXEC_RUNNING: Return immediately with true. THREAD_EXEC_PAUSED: Wait internally for flag to change to THREAD_EXEC_RUN/_STOP. TRHEAD_EXEC_STOPPED: Return immediately with false. Thread LogicUser() shall return. | |
ThreadExecControl | GetExecFlag () const |
Return the value of the Thread Execution Flag. | |
bool | Terminated () |
Returns true if thread no longer running. | |
MessageBus & | MsgBus () |
Get acces to the MessageBus associated with this thread object. | |
std::string | ToString () const |
Generate ASCII output providing a status of the object. | |
Static Public Attributes | |
static std::map< std::string, Thread * > | s_thread_registry |
IFW CTD Multiprocessing Toolkit Thread base class.
All threads to be executed in the MPTK environment, shall be derived from this class. It provides a scheduling mechanism, which executes the context specific user logic at a specified rate.
Thread execution control/status.
Enumerator | |
---|---|
THREAD_EXEC_STOPPED | |
THREAD_EXEC_RUNNING | |
THREAD_EXEC_PAUSED |
ifw::ccf::mptk::Thread::Thread | ( | const std::string & | thread_name, |
MessageBus & | message_bus, | ||
const double | period = 0.1 ) |
Constructor method, setting up the internal members.
thread_name | The ID of the thread. |
message_bus | Reference to MPTK Message Bus object to use. |
period | Period (s) (soft realtime) execution time for the thread loop (if relevant). |
|
virtual |
void ifw::ccf::mptk::Thread::Continue | ( | ) |
Continue a paused thread execution.
double ifw::ccf::mptk::Thread::GetDrift | ( | ) | const |
bool ifw::ccf::mptk::Thread::GetExecFlag | ( | ) |
Check the Thread Execution Flag. The Thread Execution Flag shall be called regularly in the thread, at least during every internal cycle (of LogicUser()). The behavior is as follows: THREAD_EXEC_RUNNING: Return immediately with true. THREAD_EXEC_PAUSED: Wait internally for flag to change to THREAD_EXEC_RUN/_STOP. TRHEAD_EXEC_STOPPED: Return immediately with false. Thread LogicUser() shall return.
Thread::ThreadExecControl ifw::ccf::mptk::Thread::GetExecFlag | ( | ) | const |
Return the value of the Thread Execution Flag.
std::string ifw::ccf::mptk::Thread::GetName | ( | ) | const |
Return the thread Name.
MessageBus & ifw::ccf::mptk::Thread::MsgBus | ( | ) |
Get acces to the MessageBus associated with this thread object.
void ifw::ccf::mptk::Thread::Pause | ( | ) |
Pause the thread execution.
void ifw::ccf::mptk::Thread::Run | ( | ) |
Method to invoke the user provided business logic of the thread. The method executes internally a loop.
void ifw::ccf::mptk::Thread::SetPriority | ( | const int | prio = -1 | ) |
If invoked, it will run the thread in real-time mode with the given priority [0; 99].
void ifw::ccf::mptk::Thread::Start | ( | ) |
Start the thread execution.
void ifw::ccf::mptk::Thread::Stop | ( | ) |
Stop the thread execution.
bool ifw::ccf::mptk::Thread::Terminated | ( | ) |
Returns true if thread no longer running.
std::string ifw::ccf::mptk::Thread::ToString | ( | ) | const |
Generate ASCII output providing a status of the object.
|
virtual |
User provided business logic. The UserLogic method need not execute an internal loop. It is taken care of by the Control() method. Instead the UserLogic() method should (normally) execute it business logic, and return control to the Control() method, which will take of the thread management.
Reimplemented in ifw::ccf::control::AcqThread, ifw::ccf::control::MonitorThread, ifw::ccf::control::ProcThread, ifw::ccf::control::PubThread, TestThread, and TestThread1.
|
static |