8#include "Arp/System/Core/PimplPtr.hxx"
9#include "Arp/System/Core/delegate.hxx"
10#include "Arp/System/Commons/Threading/ThreadSettings.hpp"
11#include "Arp/System/Commons/Threading/ThreadState.hpp"
13#include "Arp/System/Commons/Logging.h"
14#include "Arp/System/Commons/Threading/AutoResetEvent.hpp"
15#include "Arp/System/Commons/Threading/ManualResetEvent.hpp"
16#include "Arp/System/Commons/Threading/Semaphore.hpp"
17#include "Arp/System/Commons/Threading/Mutex.hpp"
87 template<
class TInstance,
class TFunction>
88 ARP_DEPRECATED(
"Use constructor with ThreadSettings instead. Supply at least a thread name!")
89 Thread(TInstance& instance, TFunction fn,
void* pStartParam =
nullptr);
97 template<class TInstance, class TFunction>
99 Thread(const TInstance& instance, TFunction fn,
void* pStartParam =
nullptr);
107 template<class TInstance, class TFunction>
109 Thread(TInstance* pInstance, TFunction fn,
void* pStartParam =
nullptr);
117 template<class TInstance, class TFunction>
119 Thread(const TInstance* pInstance, TFunction fn,
void* pStartParam =
nullptr);
147 template<class TInstance, class TFunction>
148 Thread(const
ThreadSettings& settings, TInstance& instance, TFunction fn,
void* pStartParam =
nullptr);
156 template<class TInstance, class TFunction>
157 Thread(const
ThreadSettings& settings, const TInstance& instance, TFunction fn,
void* pStartParam =
nullptr);
165 template<class TInstance, class TFunction>
166 Thread(const
ThreadSettings& settings, TInstance* pInstance, TFunction fn,
void* pStartParam =
nullptr);
174 template<class TInstance, class TFunction>
175 Thread(const
ThreadSettings& settings, const TInstance* pInstance, TFunction fn,
void* pStartParam =
nullptr);
230 static
void Sleep(
uint64 milliseconds);
234 static
size_t GetCurrentThreadId(
void);
238 static
Thread* GetCurrentThread(
void);
248 static
void SetAsynchronousCancelability(
bool enable);
252 bool IsRunning(
void)const;
271 void SetCpuAffinity(
size_t mask);
276 size_t GetCpuAffinity(
void)const;
281 void SetPriority(
size_t value);
285 size_t GetPriority(
void)const;
300 void SetStackSize(
size_t value);
304 size_t GetStackSize(
void)const;
313 void SetName(const
String& value);
317 const
String& GetName(
void)const;
328 bool IsJoinable(
void);
345 void Interrupt(
void);
348 void Terminate(
void);
355 const Impl& GetImpl(
void)const;
366template<class TInstance, class TFunction>
367inline
Thread::
Thread(TInstance& instance, TFunction fn,
void* pStartParam)
372template<
class TInstance,
class TFunction>
378template<
class TInstance,
class TFunction>
384template<
class TInstance,
class TFunction>
385inline Thread::Thread(
const TInstance* pInstance, TFunction fn,
void* pStartParam)
400template<
class TInstance,
class TFunction>
406template<
class TInstance,
class TFunction>
412template<
class TInstance,
class TFunction>
418template<
class TInstance,
class TFunction>
Adapter class to implement PImpl idiom.
Definition: PimplPtr.hxx:15
This class represents the Arp String. The implementation is based on std::string.
Definition: String.hpp:39
Prototyping of delegate template.
Definition: delegate.hxx:14
Container class for adaptable thread settings.
Definition: ThreadSettings.hpp:13
The Thread-class provides methods to execute functions and methods in a separate thread.
Definition: Thread.hpp:68
static const size_t CpuAffinityAll
Use this constant to express an affinity of the thread to all available CPUs aka. cores.
Definition: Thread.hpp:77
Thread(TInstance &instance, TFunction fn, void *pStartParam=nullptr)
Deprecated! Constructs a Thread instance for a class method.
Definition: Thread.hpp:367
void(*)(void *) ThreadStartFunction
Definition of signature of function to be executed in a separate thread.
Definition: Thread.hpp:71
std::uint64_t uint64
The Arp unsigned integer type of 8 byte size.
Definition: PrimitiveTypes.hpp:37
Namespace for classes handling threads and synchronization
ThreadState
Possible thread states.
Definition: ThreadState.hpp:15
class ARP_DEPRECATED("Use Arp::Enum<T> instead.") EnumStrings
Deprecated! The class implements an adapter for enums to define the string literals of the enum entri...
Definition: EnumStrings.hxx:38
Namespace of the C++ standard library