OpenWalnut  1.5.0dev
Public Types | Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
WWorkerThread< Function_T > Class Template Reference

A worker thread that belongs to a. More...

#include <WWorkerThread.h>

+ Inheritance diagram for WWorkerThread< Function_T >:
+ Collaboration diagram for WWorkerThread< Function_T >:

Public Types

typedef boost::function< void() > StopFunction
 a type for stop callbacks More...
 
typedef boost::function< void(WException const &) > ExceptionFunction
 a type for exception callbacks More...
 
- Public Types inherited from WThreadedRunner
typedef std::shared_ptr< WThreadedRunnerSPtr
 Abbreviation to a shared_ptr to this type. More...
 
typedef std::shared_ptr< const WThreadedRunnerConstSPtr
 Abbreviation to a const shared_ptr to this type. More...
 
typedef boost::function< void(void) > THREADFUNCTION
 Type used for simple thread functions. More...
 

Public Member Functions

 WWorkerThread (std::shared_ptr< Function_T > func, std::size_t id, std::size_t numThreads)
 Default constructor. More...
 
virtual ~WWorkerThread ()
 Default destructor. More...
 
void subscribeExceptionSignal (ExceptionFunction func)
 Subscribe a function to the exception signal. More...
 
void subscribeStopSignal (StopFunction func)
 Subscribe a function to the stop signal. More...
 
- Public Member Functions inherited from WThreadedRunner
 WThreadedRunner ()
 Default constructor. More...
 
virtual ~WThreadedRunner ()
 Destructor. More...
 
virtual void run ()
 Run thread. More...
 
void run (THREADFUNCTION f)
 Run thread. More...
 
void wait (bool requestFinish=false)
 Wait for the thread to be finished. More...
 
virtual void requestStop ()
 This method's purpose is to request a stop without waiting for it. More...
 
virtual boost::signals2::connection subscribeSignal (THREAD_SIGNAL signal, t_ThreadErrorSignalHandlerType notifier)
 Connects a specified notify function with a signal this thread instance is offering. More...
 
const WBoolFlagisCrashed () const
 Checks whether this thread has been crashed. More...
 
const std::string & getCrashMessage () const
 Get the message of the exception finally causing the crash. More...
 
void setThreadName (std::string name)
 Set the name of the thread. More...
 
std::string getThreadName () const
 Returns the current thread name. More...
 

Protected Member Functions

virtual void threadMain ()
 The thread's main function. More...
 
- Protected Member Functions inherited from WThreadedRunner
virtual void notifyStop ()
 Gets called when the thread should be stopped. More...
 
void yield () const
 Give remaining execution timeslice to another thread. More...
 
void sleep (const int32_t t) const
 Sets thread asleep. More...
 
void msleep (const int32_t t) const
 Sets thread asleep. More...
 
void waitForStop ()
 Let the thread sleep until a stop request was given. More...
 
virtual void onThreadException (const WException &e)
 This method is called if an exception was caught, which came from the custom thread code. More...
 
void handleDeadlyException (const WException &e, std::string sender="WThreadedRunner")
 Handle the specified exception which was not caught in the thread, which basically means the thread has crashed. More...
 

Private Types

typedef boost::signals2::signal< void() > StopSignal
 a type for stop signals More...
 
typedef boost::signals2::signal< void(WException const &) > ExceptionSignal
 a type for exception signals More...
 

Private Member Functions

 WWorkerThread (WWorkerThread const &)
 WWorkerThread is non-copyable, so the copy constructor is not implemented. More...
 
WWorkerThreadoperator= (WWorkerThread const &)
 WWorkerThread is non-copyable, so the copy operator is not implemented. More...
 

Private Attributes

std::shared_ptr< Function_T > m_func
 the functor called in threadMain() More...
 
std::size_t m_id
 a thread id between 0 and m_numThreads - 1 More...
 
std::size_t m_numThreads
 the number of threads More...
 
ExceptionSignal m_exceptionSignal
 the exception signal More...
 
StopSignal m_stopSignal
 the stop signal More...
 

Additional Inherited Members

- Static Public Member Functions inherited from WThreadedRunner
static void setThisThreadName (std::string name)
 Static function to set the name of the calling thread. More...
 
- Protected Attributes inherited from WThreadedRunner
boost::thread m_thread
 Thread instance. More...
 
WBoolFlag m_shutdownFlag
 Condition getting fired whenever the thread should quit. More...
 
WBoolFlag m_isCrashed
 True whenever an exception is thrown during threadMain. More...
 
std::string m_crashMessage
 The crash message. More...
 

Detailed Description

template<class Function_T>
class WWorkerThread< Function_T >

A worker thread that belongs to a.

See also
WThreadedFunction object.

Definition at line 42 of file WWorkerThread.h.

Member Typedef Documentation

◆ ExceptionFunction

template<class Function_T >
typedef boost::function< void ( WException const& ) > WWorkerThread< Function_T >::ExceptionFunction

a type for exception callbacks

Definition at line 57 of file WWorkerThread.h.

◆ ExceptionSignal

template<class Function_T >
typedef boost::signals2::signal< void ( WException const& ) > WWorkerThread< Function_T >::ExceptionSignal
private

a type for exception signals

Definition at line 49 of file WWorkerThread.h.

◆ StopFunction

template<class Function_T >
typedef boost::function< void () > WWorkerThread< Function_T >::StopFunction

a type for stop callbacks

Definition at line 54 of file WWorkerThread.h.

◆ StopSignal

template<class Function_T >
typedef boost::signals2::signal< void () > WWorkerThread< Function_T >::StopSignal
private

a type for stop signals

Definition at line 46 of file WWorkerThread.h.

Constructor & Destructor Documentation

◆ WWorkerThread() [1/2]

template<class Function_T >
WWorkerThread< Function_T >::WWorkerThread ( std::shared_ptr< Function_T >  func,
std::size_t  id,
std::size_t  numThreads 
)

Default constructor.

Parameters
funcA pointer to the function object.
idA thread id.
numThreadsThe number of threads.

Definition at line 123 of file WWorkerThread.h.

References WWorkerThread< Function_T >::m_func.

◆ ~WWorkerThread()

template<class Function_T >
WWorkerThread< Function_T >::~WWorkerThread
virtual

Default destructor.

Definition at line 141 of file WWorkerThread.h.

◆ WWorkerThread() [2/2]

template<class Function_T >
WWorkerThread< Function_T >::WWorkerThread ( WWorkerThread< Function_T > const &  )
private

WWorkerThread is non-copyable, so the copy constructor is not implemented.

Member Function Documentation

◆ operator=()

template<class Function_T >
WWorkerThread& WWorkerThread< Function_T >::operator= ( WWorkerThread< Function_T > const &  )
private

WWorkerThread is non-copyable, so the copy operator is not implemented.

Returns
this worker-thread.

◆ subscribeExceptionSignal()

template<class Function_T >
void WWorkerThread< Function_T >::subscribeExceptionSignal ( ExceptionFunction  func)

Subscribe a function to the exception signal.

Parameters
funcThe function.

Definition at line 148 of file WWorkerThread.h.

Referenced by WWorkerThreadTest::testExceptions().

+ Here is the caller graph for this function:

◆ subscribeStopSignal()

template<class Function_T >
void WWorkerThread< Function_T >::subscribeStopSignal ( StopFunction  func)

Subscribe a function to the stop signal.

Parameters
funcThe function.

Definition at line 157 of file WWorkerThread.h.

Referenced by WWorkerThreadTest::testSingleThread(), and WWorkerThreadTest::testStopThread().

+ Here is the caller graph for this function:

◆ threadMain()

template<class Function_T >
void WWorkerThread< Function_T >::threadMain
protectedvirtual

The thread's main function.

Reimplemented from WThreadedRunner.

Definition at line 166 of file WWorkerThread.h.

References WException::what().

+ Here is the call graph for this function:

Member Data Documentation

◆ m_exceptionSignal

template<class Function_T >
ExceptionSignal WWorkerThread< Function_T >::m_exceptionSignal
private

the exception signal

Definition at line 116 of file WWorkerThread.h.

◆ m_func

template<class Function_T >
std::shared_ptr< Function_T > WWorkerThread< Function_T >::m_func
private

the functor called in threadMain()

Definition at line 107 of file WWorkerThread.h.

Referenced by WWorkerThread< Function_T >::WWorkerThread().

◆ m_id

template<class Function_T >
std::size_t WWorkerThread< Function_T >::m_id
private

a thread id between 0 and m_numThreads - 1

Definition at line 110 of file WWorkerThread.h.

◆ m_numThreads

template<class Function_T >
std::size_t WWorkerThread< Function_T >::m_numThreads
private

the number of threads

Definition at line 113 of file WWorkerThread.h.

◆ m_stopSignal

template<class Function_T >
StopSignal WWorkerThread< Function_T >::m_stopSignal
private

the stop signal

Definition at line 119 of file WWorkerThread.h.


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