Scanframe Modular Application 0.1.0
Loading...
Searching...
No Matches
sf::ThreadClosure Class Reference

Class which combines a thread class and closure template. More...

#include <ThreadClosure.h>

Inheritance diagram for sf::ThreadClosure:
Collaboration diagram for sf::ThreadClosure:

Public Member Functions

 ThreadClosure (const std::string &name="")
 Default constructor.
 
 ThreadClosure (const func_type &func, const std::string &name="")
 Thread run function assigment constructor.
 
- Public Member Functions inherited from sf::Thread
handle_type start ()
 Starts a thread with default attributes which calls on its turn the overridden run().
 
handle_type start (const Attributes &attr)
 Starts a thread which calls on its turn the overridden function Run().
 
virtual void terminate ()
 Can be overloaded to signal the thread to terminate.
 
void terminateAndWait ()
 Same as calling Terminate() and thereafter calling WaitForExit()
 
void waitForExit ()
 Waits for the thread to exit.
 
EStatus getStatus () const
 Returns the status.
 
const char * getStatusText (EStatus status=(EStatus) -1) const
 Returns the status a string.
 
int getExitCode () const
 Returns the exist value of the thread function.
 
bool isSelf () const
 Returns true if the calling thread is this thread.
 
id_type getId () const
 Returns the thread ID. Is currently in Linux the same as the handle.
 
handle_type getHandle () const
 Returns the handle of this instance.
 
 operator handle_type () const
 Casting operator for THandle type.
 
void setName (const char *name)
 Sets the name of the thread available in the debugger. The name is clipped to the first 15 characters only.
 
std::string getName () const
 Gets the name of the thread available in the debugger.
 
int getPriority () const
 Gets the current priority of this instance.
 
bool setPriority (int pri, int sp=Attributes::spScheduleOther)
 Can pass an enumerate EPriority for simplicity.
 
void setTerminationTime (const TimeSpec &ts)
 Sets the time needed for the thread to terminate. Default is one 100 ms.
 
bool shouldTerminate () const
 Call by the thread itself to determine if it should terminate. Another thread then this one it too but has no effect.
 
void exit (int code)
 Alternative to returning from then run() method.
 
void setDebug (bool yn)
 
bool sleep (const TimeSpec &ts, bool alertable=true) const
 Makes the current thread sleep for the given amount time until a signal interrupts when alertable is true.
 
 Thread (const Thread &)=delete
 Copying constructor disabled and not implemented.
 
const Threadoperator= (const Thread &)=delete
 Copy constructor not implemented.
 
bool isDebug () const
 Gets the debug flag.
 
- Public Member Functions inherited from sf::TClosure< int, Thread & >
 TClosure ()=default
 Default constructor.
 
 TClosure (const TClosure &c)
 Copy constructor.
 
 TClosure (const func_type &fn)
 Function assignment constructor.
 
TClosureassign (const func_type &fn)
 Function assignment method for static function.
 
TClosureassign (ClassType *cls, MethodType mtd, BoundArgs... args)
 Binds a non-static class member function to this instance.
 
TClosureunassign ()
 Function assignment member.
 
TClosureoperator= (const TClosure &c)
 Closure assignment operator.
 
TClosureoperator= (const func_type &f)
 Closure assignment operator.
 
int operator() (Args... args) const
 Make the call to the member function.
 
bool isAssigned () const
 Checks if the closure is valid for calling.
 
 operator bool () const
 Checks if the closure is valid for calling.
 

Protected Member Functions

int run () override
 
- Protected Member Functions inherited from sf::Thread
 Thread (const std::string &name)
 Protected constructor which demands to derive a class.
 
 Thread (bool)
 Wraps this class around the main thread of the application. The boolean bogus argument is to be different from the default constructor.
 
virtual ~Thread ()
 Virtual Destructor.
 
virtual void cleanup ()
 Function which can be overloaded in a derived class.
 
void TerminationSignal ()
 Called to unblock system functions.
 
- Protected Member Functions inherited from sf::TClosure< int, Thread & >
int call (Args... args) const
 Makes the call to the member function.
 

Additional Inherited Members

- Public Types inherited from sf::Thread
enum  EStatus : int {
  tsInvalid = 0 , tsCreated , tsRunning , tsFinished ,
  tsTerminated
}
 Thread states enumeration. More...
 
enum  EPriority : int {
  tpIdle = -15 , tpLowest = -2 , tpBelowNormal = -1 , tpNormal = 0 ,
  tpAboveNormal = 1 , tpHighest = 2 , tpTimeCritical = 15
}
 Enumeration of thread priorities. More...
 
typedef pthread_t handle_type
 Local declaration of the handle type.
 
typedef pid_t id_type
 Local declaration of the thread id type.
 
- Public Types inherited from sf::TClosure< int, Thread & >
typedef std::function< int(Args...)> func_type
 Function type of the lambda or function.
 
- Static Public Member Functions inherited from sf::Thread
static int getTerminationSignal ()
 Returns the thread termination signal.
 
static bool yieldToOther ()
 Yield control of the current thread. The name 'Yield()' is defined as a macro in MingW.
 
static handle_type getCurrentHandle ()
 Return the current thread handle.
 
static id_type getMainId ()
 Gets the main thread ID.
 
static id_type getCurrentId ()
 Gets the current thread ID.
 
static ThreadgetCurrent ()
 Gets the sf::Thread instance reference of the current thread.
 
static size_t getCurrentStackSize ()
 Returns the current thread initial stack size.
 

Detailed Description

Class which combines a thread class and closure template.

Allows linking of a lambda function to be called as a thread run function. Usage is like:

{
while (!thread.shouldTerminate());
{
if (Thread::sleep(TimeSpec(0.3), true))
{
std::clog << "Woken up normal" << std::endl;
}
else
{
std::clog << "Woken up by interruption" << std::endl;
}
}
return 0;
}));
tc.start();
tc.terminateAndWait();
std::function< int(Args...)> func_type
Function type of the lambda or function.
Definition TClosure.h:22
Class which combines a thread class and closure template.
Definition ThreadClosure.h:36
Thread wrapper class to be used for attachment to an existing thread or a new to be created thread.
Definition Thread.h:30
bool shouldTerminate() const
Call by the thread itself to determine if it should terminate. Another thread then this one it too bu...
bool sleep(const TimeSpec &ts, bool alertable=true) const
Makes the current thread sleep for the given amount time until a signal interrupts when alertable is ...
Class wrapper for timespec structure to modify.
Definition TimeSpec.h:15

Constructor & Destructor Documentation

◆ ThreadClosure() [1/2]

sf::ThreadClosure::ThreadClosure ( const std::string &  name = "")
inline

Default constructor.

◆ ThreadClosure() [2/2]

sf::ThreadClosure::ThreadClosure ( const func_type func,
const std::string &  name = "" 
)
inlineexplicit

Thread run function assigment constructor.

Parameters
funcFunction run by the thread.
nameOptional name of the thread executing.

Member Function Documentation

◆ run()

int sf::ThreadClosure::run ( )
inlineoverrideprotectedvirtual

Overrides run function and calls the closure assigned one.

Implements sf::Thread.


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