|
- #pragma once
-
- #include <ecs/config.h>
- #include <ecs/core/system/parallelism/strategy/split_base.h>
-
- namespace ecs {
- namespace core {
- namespace system {
- namespace parallelism {
-
- template<typename T_parameters>
- struct split_evenly
- : private split_base
- {
- public:
- using parameters_type = T_parameters;
-
- template<typename T_context, typename T_instance, typename T_func>
- inline void operator()(T_context& context, T_instance& instance, T_func&& func) const
- {
- auto split_count = parameters_type::get_split_count();
- auto total_count = instance.subscribed_count();
- auto per_split = total_count / split_count;
- executor_proxy<T_context, T_instance> ep { context, instance, split_count, per_split };
- func(instance, ep);
- }
- };
-
- } } } }
|