|
CeresEngine 0.2.0
A game development framework
|
#include <CeresEngine/Platform/Win32/Win32ThreadPool.hpp>
Classes | |
| class | Executor |
| An executor object that dispatches calls to the CoreFoundation CFRunLoop. More... | |
Public Member Functions | |
| Win32ThreadPool (DispatchQueueType type) | |
| ~Win32ThreadPool () noexcept final | |
| AnyExecutor | getExecutor () noexcept final |
| Returns an executor that run execute scheduled commands on the context. | |
| void | suspend () final |
| Suspends the invocation of function objects on a queue. | |
| void | resume () final |
| Resumes the invocation of block objects on a queue. | |
| UPtr< DispatchQueue > | createSubQueue (DispatchQueueType type, StringView name="") final |
| Resumes the invocation of block objects on a queue. | |
Public Member Functions inherited from CeresEngine::ExecutionContext | |
| virtual | ~ExecutionContext () noexcept=default |
| Virtual destructor for the execution context object. | |
| template<typename T > | |
| bool | hasService () noexcept |
Determine if the ExecutionContext contains the specified service type. | |
| template<typename T > | |
| T & | getService () noexcept |
| Obtain the service object corresponding to the given type. | |
| template<typename T > | |
| T * | getServiceIf () noexcept |
| Obtain the service object corresponding to the given type. | |
| executor_type | get_executor () noexcept |
| Returns an executor that run execute scheduled commands on the context. | |
| bool | isActive () const noexcept |
| Checks if the execution context is currently active. | |
Private Member Functions | |
| void | onWorkStarted () noexcept |
| Inform the executor that it has some outstanding work to do. | |
| void | onWorkFinished () noexcept |
| Inform the executor that some work is no longer outstanding. | |
| void | schedule (UniqueFunction< void()> function, ExecutorBlocking blockingProperty, ExecutorPriority priority) |
| Schedules a new function to be run in the run loop. | |
| PTP_CALLBACK_ENVIRON | getCallbackEnvironment (ExecutorPriority priority) noexcept |
Determines the callback environment that better fits the given priority execution requirement. | |
Private Attributes | |
| TP_CALLBACK_ENVIRON | mCallbackEnvironments [3] |
| PTP_POOL | mThreadPool |
Additional Inherited Members | |
Public Types inherited from CeresEngine::ExecutionContext | |
| using | ID = id |
| using | executor_type = AnyExecutor |
Static Public Member Functions inherited from CeresEngine::ExecutionContext | |
| static ExecutionContext * | getCurrent () noexcept |
| Gets the current execution context, if any is active. | |
| static ExecutionContext & | get () noexcept |
| Gets the current execution context, if any is active. | |
|
explicit |
|
finalnoexcept |
|
finalvirtual |
Resumes the invocation of block objects on a queue.
Calling this function decrements the suspension count of a suspended queue. While the count is greater than zero, the queue remains suspended. When the suspension count returns to zero, any blocks submitted to the dispatch queue or any events observed by the dispatch source while suspended are delivered.
With one exception, each call to resume() must balance a call to suspend(). It is undefined to call resume() more times than suspend(), which would result in a negative suspension count.
Implements CeresEngine::DispatchQueue.
|
privatenoexcept |
Determines the callback environment that better fits the given priority execution requirement.
|
inlinefinalvirtualnoexcept |
Returns an executor that run execute scheduled commands on the context.
Implements CeresEngine::ExecutionContext.
|
privatenoexcept |
Inform the executor that some work is no longer outstanding.
|
privatenoexcept |
Inform the executor that it has some outstanding work to do.
|
finalvirtual |
Resumes the invocation of block objects on a queue.
Calling this function decrements the suspension count of a suspended queue. While the count is greater than zero, the queue remains suspended. When the suspension count returns to zero, any blocks submitted to the dispatch queue or any events observed by the dispatch source while suspended are delivered.
With one exception, each call to resume() must balance a call to suspend(). It is undefined to call resume() more times than suspend(), which would result in a negative suspension count.
Implements CeresEngine::DispatchQueue.
|
private |
Schedules a new function to be run in the run loop.
| function | The function to be executed. |
|
finalvirtual |
Suspends the invocation of function objects on a queue.
By suspending a dispatch object, your application can temporarily prevent the execution of any functions associated with that queue.
The suspension occurs after completion of any blocks running at the time of the call. Calling this function increments the suspension count of the object, and calling resume() decrements it. While the count is greater than zero, the object remains suspended, so you must balance each suspend() call with a matching resume() call.
Any blocks submitted to a dispatch queue or events observed by a dispatch source are delivered once the object is resumed.
resume() before disposing of the queue. The behavior when releasing the last reference to a dispatch object while it is in a suspended state is undefined. Implements CeresEngine::DispatchQueue.
|
private |
|
private |