|
openDAQ
Open data acquisition platform
|
A thread-pool scheduler that supports scheduling one-off functions as well as dependency graphs. More...
Inherits ObjectPtr< IScheduler >.
A thread-pool scheduler that supports scheduling one-off functions as well as dependency graphs.
Public Member Functions | |
| daq::AwaitablePtr | scheduleFunction (const daq::FunctionPtr &function) const |
Schedules the specified work function to run on the thread-pool. The call does not block but immediately returns an awaitable that represents the asynchronous execution. It can be waited upon and queried for status and result. More... | |
| void | scheduleWork (const daq::WorkPtr &work) const |
| Schedules the specified work callback to run on the thread-pool. The call does not block. More... | |
| daq::AwaitablePtr | scheduleGraph (const daq::TaskGraphPtr &graph) const |
Schedules the specified dependency graph to run on the thread-pool. The call does not block but immediately returns an awaitable that represents the asynchronous execution. It can be waited upon and queried for status and result. Any exceptions that occur during the graph execution are silently ignored. More... | |
| void | stop () const |
| Cancels all outstanding work and waits for the remaining to complete. After this point the scheduler does not allow any new work or graphs for scheduling. | |
| void | waitAll () const |
| Waits fo all current scheduled work and tasks to complete. | |
| daq::Bool | isMultiThreaded () const |
| Returns whether more than one worker thread is used. More... | |
| void | runMainLoop (daq::SizeT loopTime=1) const |
| Starts and blocks the main event loop, executing scheduled tasks. More... | |
| daq::Bool | isMainLoopSet () const |
| Checks if the main loop is currently set. More... | |
| void | stopMainLoop () const |
| Signals the main loop to stop processing and return from runMainLoop. This method unblocks the loop and requests graceful shutdown. It is typically called from another thread or in response to an application shutdown signal. Has no effect if the loop is not currently running. | |
| void | runMainLoopIteration () const |
| Executes a single iteration of the main loop, processing scheduled tasks. More... | |
| void | scheduleWorkOnMainLoop (const daq::WorkPtr &work) const |
| Schedules a task to be executed by the main loop. More... | |