Represents a user-defined thread.
More...
Represents a user-defined thread.
|
| AThread (std::function< void()> functor) |
|
void | detach () |
|
void | start () |
| Start thread execution.
|
|
bool | isInterrupted () override |
|
void | resetInterruptFlag () override |
| Reset interruption flag. More...
|
|
void | interrupt () override |
| Interrupt thread's execution. More...
|
|
void | join () |
| Waits for thread to be finished.
|
|
id | getId () const |
|
void | enqueue (AMessageQueue<>::Message f) |
| Delivers task for execution (message) to this thread's event queue. Messages are processed by framework itself using AEventLoop. This behaviour may be overwritten using the AThread::processMessages() function.
|
|
IEventLoop * | getCurrentEventLoop () const |
| Get current event loop for this thread. More...
|
|
template<class Callable > |
void | operator<< (Callable fun) |
| Enqueue message to make. More...
|
|
template<class Callable > |
void | operator* (Callable fun) |
| Enqueue message to make. Helper function for async, asyncX, ui, uiX. More...
|
|
const AString & | threadName () const noexcept |
|
AStacktrace | threadStacktrace () const |
| Retrieve stacktrace of the thread.
|
|
bool | messageQueueEmpty () noexcept |
|
_< AObject > | sharedPtr () |
|
_weak< AObject > | weakPtr () |
|
void | clearSignals () noexcept |
|
template<AAnySignal Signal, ACompatibleSlotFor< Signal > Function> |
void | connect (Signal &signal, Function &&function) |
|
void | setSignalsEnabled (bool enabled) |
|
bool | isSignalsEnabled () const noexcept |
|
template<ASignalInvokable T> |
void | operator^ (T &&t) |
|
_< AAbstractThread > | getThread () const |
|
bool | isSlotsCallsOnlyOnMyThread () const noexcept |
|
void | setSlotsCallsOnlyOnMyThread (bool slotsCallsOnlyOnMyThread) |
|
| noncopyable (const noncopyable &)=delete |
|
noncopyable & | operator= (const noncopyable &)=delete |
|
|
static void | sleep (std::chrono::milliseconds duration) |
| Sleep for specified duration. Most operation systems guarantee that elasped time will be greater than specified. AThread::interrupt() is supported. More...
|
|
static _< AAbstractThread > | current () |
|
static void | interruptionPoint () |
| Interruption point. More...
|
|
static void | setName (AString name) noexcept |
|
static void | processMessages () |
| Processes messages from other threads of current thread. Called by framework itself using IEventLoop.
|
|
static void | disconnect () |
|
template<AAnySignal Signal, aui::derived_from< AObject > Object, ACompatibleSlotFor< Signal > Function> |
static void | connect (Signal &signal, Object *object, Function &&function) |
|
template<AAnySignal Signal, aui::derived_from< AObject > Object, ACompatibleSlotFor< Signal > Function> |
static void | connect (Signal &signal, Object &object, Function &&function) |
|
template<AAnySignal Signal, aui::derived_from< AObject > Object, ACompatibleSlotFor< Signal > Function> |
static void | connect (Signal &signal, _< Object > object, Function &&function) |
|
static void | moveToThread (aui::no_escape< AObject > object, _< AAbstractThread > thread) |
|
|
typedef std::thread::id | id |
| Thread ID type.
|
|
| AAbstractThread (const id &id) noexcept |
|
void | updateThreadName () noexcept |
|
virtual void | processMessagesImpl () |
|
void | setThread (_< AAbstractThread > thread) |
| Set thread of the object.
|
|
id | mId |
| Thread ID.
|
|
AString | mThreadName |
|
AMessageQueue | mMessageQueue |
|
◆ current()
◆ interrupt()
void AThread::interrupt |
( |
| ) |
|
|
overridevirtual |
◆ interruptionPoint()
void AThread::interruptionPoint |
( |
| ) |
|
|
static |
Interruption point.
If the interruption flag is raised for the caller thread then flag is reset and AThread::Interrupted exception is thrown, efficiently stopping the task execution and safely freeing resources with C++'s RAII feature.
async, asyncX, AThreadPool::enqueue, AUI_ENTRY handle AThread::Interrupted, so throwing AThread::Interrupted is safe.
◆ isInterrupted()
bool AThread::isInterrupted |
( |
| ) |
|
|
overridevirtual |
- Returns
- true if interrupt requested for this thread.
Reimplemented from AAbstractThread.
◆ resetInterruptFlag()
void AThread::resetInterruptFlag |
( |
| ) |
|
|
overridevirtual |
◆ setName()
static void AThread::setName |
( |
AString |
name | ) |
|
|
inlinestaticnoexcept |
Sets name of the current thread for debugger.
- Parameters
-
name | new name of the thread |
◆ sleep()
void AThread::sleep |
( |
std::chrono::milliseconds |
duration | ) |
|
|
static |
Sleep for specified duration. Most operation systems guarantee that elasped time will be greater than specified. AThread::interrupt()
is supported.
- Parameters
-
#include <AUI/Thread/AThread.h>
The documentation for this class was generated from the following files:
- aui.core/src/AUI/Thread/AThread.h
- aui.core/src/AUI/Thread/AThread.cpp