![]() |
MySQL 26.7.0
Source Code Documentation
|
An example of Dependency Tracker implementation that tracks a single task predecessor. More...
#include <dependency_tracker_single_predecessor_example.h>
Classes | |
| struct | Dependency |
| Representation of a dependency. More... | |
Public Types | |
| using | Task_id_type = Task_id |
| using | Mutex_type = concurrency::Mutex |
| using | Mt_key = concurrency::Mutex_key |
| using | St_key = concurrency::Stage_key |
Public Types inherited from mysql::scheduler::Base_dependency_tracker | |
| using | Task_id_type = Task_id |
| using | Mutex_type = concurrency::Mutex |
Public Member Functions | |
| Dependency_tracker_single_predecessor () | |
| bool | add_dependency (const Task_id_type &predecessor, const Task_id_type &successor) override |
| add_dependency More... | |
| bool | activate_task (const Task_id &task) override |
| Register task in the system to prevent adding dependencies on non-existing tasks and adding active dependencies on tasks that are already finished. More... | |
| bool | check_ready (const Task_id &task) override |
| check_ready More... | |
| std::vector< Task_id > | mark_dependency_met (const Task_id &task, bool is_finished) override |
| Task is finished, mark all dependencies of this task as met. More... | |
| std::vector< Task_id > | get_successors (const Task_id &task) |
| Get the list of tasks that depend on the given task. More... | |
Public Member Functions inherited from mysql::scheduler::Base_dependency_tracker | |
| virtual | ~Base_dependency_tracker ()=default |
| Destructor. More... | |
Private Types | |
| using | Dependencies_registry = Task_registry_multi< Task_id, Dependency > |
Private Attributes | |
| Dependencies_registry | m_dependencies |
| Registry of task dependencies. More... | |
An example of Dependency Tracker implementation that tracks a single task predecessor.
Used only for excercising the tracker interface.
|
private |
| mysql::scheduler::Dependency_tracker_single_predecessor::Dependency_tracker_single_predecessor | ( | ) |
|
overridevirtual |
Register task in the system to prevent adding dependencies on non-existing tasks and adding active dependencies on tasks that are already finished.
Implements mysql::scheduler::Base_dependency_tracker.
|
overridevirtual |
add_dependency
Function adds dependency if valid
| predecessor | Predecessor task ID |
| successor | Successor task ID |
| true | Dependency added successfully |
| false | Failed to add dependency |
Implements mysql::scheduler::Base_dependency_tracker.
|
overridevirtual |
check_ready
Function checks whether a task is ready for execution, without locking the object (load)
| task | Task ID |
Implements mysql::scheduler::Base_dependency_tracker.
| std::vector< Task_id > mysql::scheduler::Dependency_tracker_single_predecessor::get_successors | ( | const Task_id & | task | ) |
Get the list of tasks that depend on the given task.
| task | The task ID |
|
overridevirtual |
Task is finished, mark all dependencies of this task as met.
| task | Identifier of a task that finished its execution |
| is_finished | Whether the task has finished execution |
Implements mysql::scheduler::Base_dependency_tracker.
|
private |
Registry of task dependencies.
Concurrency is covered by internal representation of the registry.