|
ifw-ccf
3.0.0-pre2
|
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. More... | |
| 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]. More... | |
| std::string | GetName () const |
| Return the thread Name. More... | |
| void | Run () |
| Method to invoke the user provided business logic of the thread. The method executes internally a loop. More... | |
| 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. More... | |
| void | Start () |
| Start the thread execution. More... | |
| void | Stop () |
| Stop the thread execution. More... | |
| void | Pause () |
| Pause the thread execution. More... | |
| void | Continue () |
| Continue a paused thread execution. More... | |
| 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. More... | |
| ThreadExecControl | GetExecFlag () const |
| Return the value of the Thread Execution Flag. More... | |
| bool | Terminated () |
| Returns true if thread no longer running. More... | |
| MessageBus & | MsgBus () |
| Get acces to the MessageBus associated with this thread object. More... | |
| std::string | ToString () const |
| Generate ASCII output providing a status of the object. More... | |
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 | |
| 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 ccf::mptk::Thread::Continue | ( | ) |
Continue a paused thread execution.
| double ccf::mptk::Thread::GetDrift | ( | ) | const |
| bool 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 ccf::mptk::Thread::GetExecFlag | ( | ) | const |
Return the value of the Thread Execution Flag.
| std::string ccf::mptk::Thread::GetName | ( | ) | const |
Return the thread Name.
| MessageBus & ccf::mptk::Thread::MsgBus | ( | ) |
Get acces to the MessageBus associated with this thread object.
| void ccf::mptk::Thread::Pause | ( | ) |
Pause the thread execution.
| void ccf::mptk::Thread::Run | ( | ) |
Method to invoke the user provided business logic of the thread. The method executes internally a loop.
| void 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 ccf::mptk::Thread::Start | ( | ) |
Start the thread execution.
| void ccf::mptk::Thread::Stop | ( | ) |
Stop the thread execution.
| bool ccf::mptk::Thread::Terminated | ( | ) |
Returns true if thread no longer running.
| std::string 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 TestThread1, TestThread, ccf::control::PubThread, ccf::control::ProcThread, ccf::control::MonitorThread, and ccf::control::AcqThread.
|
static |