Dispatcher that supports being run in a user-determined thread. Not all Dispatcher implementations can be used in this way.
Public Member Functions | |
| bool | RunUntilStalled () |
| void | RunToCompletion () |
| void | RunForever () |
Public Member Functions inherited from pw::async2::Dispatcher | |
| Dispatcher (Dispatcher &)=delete | |
| Dispatcher & | operator= (Dispatcher &)=delete |
| Dispatcher (Dispatcher &&)=delete | |
| Dispatcher & | operator= (Dispatcher &&)=delete |
| void | Post (Task &task) |
| void | LogRegisteredTasks () |
Private Member Functions | |
| virtual void | DoWaitForWake ()=0 |
Friends | |
| template<typename > | |
| class | DispatcherForTestFacade |
Additional Inherited Members | |
Protected Types inherited from pw::async2::Dispatcher | |
| enum | RunTaskResult { kActive = Task::kActive , kDeregistered = Task::kDeregistered , kCompleted = Task::kCompleted } |
Protected Member Functions inherited from pw::async2::Dispatcher | |
| bool | PopAndRunAllReadyTasks () |
| Task * | PopTaskToRun () |
| Task * | PopTaskToRun (bool &has_posted_tasks) |
| Task * | PopSingleTaskForThisWake () |
| RunTaskResult | RunTask (Task &task) |
|
privatepure virtual |
Blocks until DoWake() is called. Must return immediately if DoWake() was already called since the last DoWaitForWake call.
If the implementation is unable to block the thread, it must crash.
Implemented in pw::async2::BasicDispatcher, pw::async2::DispatcherForTestFacade< Native >, pw::async2::EpollDispatcher, and pw::async2::NotifiedDispatcher.
| void pw::async2::RunnableDispatcher::RunForever | ( | ) |
Runs the dispatcher on this thread indefinitely, sleeping when there is no work to perform.
| void pw::async2::RunnableDispatcher::RunToCompletion | ( | ) |
Runs tasks on the dispatcher until all tasks are completed, blocking the thread as needed.
RunToCompletion returns when there are no tasks on the dispatcher, but new tasks could be posted to RunToCompletion from another thread before the function even returns.
|
inline |
Runs tasks until no further progress can be made.
| true | There are still sleeping tasks in the dispatcher. |
| false | All tasks ran to completion. |