|
ngscopeclient v0.1
|
Execution manager / scheduler for the filter graph. More...
#include <FilterGraphExecutor.h>
Public Member Functions | |
| FilterGraphExecutor (size_t numThreads=8) | |
| void | RunBlocking (const std::set< FlowGraphNode * > &nodes) |
| Evaluates the filter graph, blocking until execution has completed. | |
| FlowGraphNode * | GetNextRunnableNode () |
| Returns the next filter available to run, blocking if none are ready. More... | |
| std::map< FlowGraphNode *, int64_t > | GetRunTimes () |
| Get the run times of the most recent filter graph evaluation. | |
Protected Member Functions | |
| void | DoExecutorThread (size_t i) |
| void | UpdateRunnable () |
| Searches m_incompleteNodes for any that are unblocked, and adds them to m_runnableNodes. More... | |
Static Protected Member Functions | |
| static void | ExecutorThread (FilterGraphExecutor *pThis, size_t i) |
| Thread function to handle filter graph execution. | |
Protected Attributes | |
| std::mutex | m_mutex |
| Mutex for access to shared state. | |
| std::set< FlowGraphNode * > | m_incompleteNodes |
| Nodes that have not yet been updated. | |
| std::set< FlowGraphNode * > | m_runnableNodes |
| Nodes that have no dependencies and are eligible to run now. | |
| std::set< FlowGraphNode * > | m_runningNodes |
| Nodes that are actively being run. | |
| std::vector< std::unique_ptr< std::thread > > | m_threads |
| Set of thread contexts. | |
| std::condition_variable | m_workerCvar |
| Condition variable for waking up worker threads when work arrives. | |
| std::mutex | m_workerCvarMutex |
| Mutex for access to m_workerCvar. | |
| std::condition_variable | m_completionCvar |
| Condition variable for waking up main thread when work is complete. | |
| std::mutex | m_completionCvarMutex |
| Mutex for access to m_completionCvar. | |
| bool | m_allWorkersComplete |
| Indicates that all worker threads have finished executing this pass. | |
| bool | m_terminating |
| Shutdown flag. | |
| std::map< FlowGraphNode *, int64_t > | m_lastExecutionTime |
| Performance statistics from previous execution. | |
| std::map< FlowGraphNode *, int64_t > | m_currentExecutionTime |
| Performance statistics from current execution. | |
| std::mutex | m_perfStatsMutex |
| Mutex for updating performance statistics. | |
Execution manager / scheduler for the filter graph.
| FlowGraphNode * FilterGraphExecutor::GetNextRunnableNode | ( | ) |
Returns the next filter available to run, blocking if none are ready.
Returns null if there are no remaining filters to evaluate.
|
protected |
Searches m_incompleteNodes for any that are unblocked, and adds them to m_runnableNodes.
Assumes m_mutex is locked