AIStatefulTask ‐ Asynchronous, Stateful Task Scheduler library. Threads-like task objects evolving through user-defined states. |
Describes if, how and where to run a task.
By constructing a Handler from Handler::idle, it describes that a task is idle, or that Handler is not to be used when other alternatives exist.
By constructing a Handler from Handler::immediate, it describes that a task should run in the thread that calls run() or the thread that wakes up a task by calling signal(). Hence, this handler causes a task to run to until the first time it goes idle, or calls yield
, before returning from run
/ signal
respectively.
When a Handler is constructed from an AIEngine pointer, then it describes that a task should run in that engine.
Finally, a Handler can be constructed from AIQueueHandle, describing that a task should run in the thread pool by adding it to the PriorityQueue of that handle.
#include <AIStatefulTask.h>
Classes | |
union | Handle |
Contains extra data that depends on the type of the Handler. More... | |
Public Types | |
enum | type_t { idle_h , immediate_h , engine_h , thread_pool_h } |
The type of m_type. More... | |
enum | special_t { idle = idle_h , immediate = immediate_h } |
A typed use by the constuctor Handler(special_t). More... | |
Public Member Functions | |
Handler (special_t special) | |
Construct a special Handler. | |
Handler (AIEngine *engine) | |
Construct a Handler from an AIEngine pointer. | |
Handler (AIQueueHandle queue_handle) | |
Construct a Handler from an AIQueueHandle. | |
bool | is_engine () const |
Return true if this is an engine Handler. | |
bool | is_immediate () const |
Return true if this is an immediate Handler. | |
bool | is_thread_pool () const |
Return true if this is a thread pool handler. | |
AIQueueHandle | get_queue_handle () const |
Return the AIQueueHandle to use (only call when appropriate). | |
operator bool () const | |
Return true when not idle / unused. | |
bool | operator== (Handler handler) const |
Return true when equivalent to handler. | |
bool | operator!= (Handler handler) const |
Public Attributes | |
Handle | m_handle |
Extra data that depends on m_type. | |
type_t | m_type |
The type of this Handler. | |
Friends | |
std::ostream & | operator<< (std::ostream &os, Handler const &handler) |
Write a Handler to an ostream. | |
A typed use by the constuctor Handler(special_t).
Enumerator | |
---|---|
idle | Construct an idle Handler. |
immediate | Construct an immediate Handler. |