8 #include "Arp/System/Commons/Threading/Thread.hpp" 10 namespace Arp {
namespace System {
namespace Commons {
namespace Threading
28 template<
class TInstance,
class TFunction>
29 WorkerThread(TInstance& instance, TFunction fn,
int idleTime,
const char* threadName);
37 template<
class TInstance,
class TFunction>
38 WorkerThread(
const TInstance& instance, TFunction fn,
int idleTime,
const char* threadName);
46 template<
class TInstance,
class TFunction>
47 WorkerThread(TInstance* pInstance, TFunction fn,
int idleTime,
const char* threadName);
55 template<
class TInstance,
class TFunction>
56 WorkerThread(
const TInstance* pInstance, TFunction fn,
int idleTime,
const char* threadName);
64 template<
class TInstance,
class TFunction>
73 template<
class TInstance,
class TFunction>
82 template<
class TInstance,
class TFunction>
91 template<
class TInstance,
class TFunction>
99 explicit WorkerThread(WorkDelegate&& loopDelegate,
int idleTime,
const char* threadName);
125 static void RunInternal(
void* pParam);
130 std::atomic<bool> stopWorking{
false};
131 std::atomic<bool> isStarted{
false};
138 template<
class TInstance,
class TFunction>
144 template<
class TInstance,
class TFunction>
150 template<
class TInstance,
class TFunction>
158 template<
class TInstance,
class TFunction>
173 template<
class TInstance,
class TFunction>
179 template<
class TInstance,
class TFunction>
185 template<
class TInstance,
class TFunction>
187 : thread(settings, &
WorkerThread::RunInternal, (void*)this)
188 , idleTime(idleTimeArg)
193 template<
class TInstance,
class TFunction>
195 : thread(settings, &
WorkerThread::RunInternal, (void*)this)
196 , idleTime(idleTimeArg)
202 : thread(settings, &
WorkerThread::RunInternal, (void*)this)
203 , idleTime(idleTimeArg)
delegate< R(A...)> make_delegate(R(*const function_ptr)(A...)) noexcept
Creates a delegate from a static function.
Definition: delegate.hxx:215
void Start(void)
Starts the execution of the thread.
Worker threads repeat the execution of the threaded code until Stop is called.
Definition: WorkerThread.hpp:14
~WorkerThread(void)=default
Deallocates the memory used for this instance but does not quit the thread.
The Thread-class provides methods to execute functions and methods in a separate thread.
Definition: Thread.hpp:91
void Stop(void)
Stops the execution of the thread syncronously.
bool IsRunning(void) const
Determines if this thread is in running state.
Definition: Thread.hpp:612
bool IsRunning(void) const
Checks if the thread is in running state.
Definition: WorkerThread.hpp:209
delegate< void(void)> WorkDelegate
The delegate of threads loop body.
Definition: WorkerThread.hpp:18
Container class for adaptable thread settings.
Definition: ThreadSettings.hpp:12
Root namespace for the PLCnext API
WorkerThread(TInstance &instance, TFunction fn, int idleTime, const char *threadName)
Constructs an WorkerThread instance for a class method.
Definition: WorkerThread.hpp:139
System components used by the System, Device, Plc or Io domains.