選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

29 行
860 B

  1. #pragma once
  2. #include <ecs/config.h>
  3. #include <ecs/core/system/parallelism/strategy/split_base.h>
  4. namespace ecs {
  5. namespace core {
  6. namespace system {
  7. namespace parallelism {
  8. template<typename T_parameters>
  9. struct split_every
  10. : private split_base
  11. {
  12. using parameters_type = T_parameters;
  13. template<typename T_context, typename T_instance, typename T_func>
  14. inline void operator()(T_context& context, T_instance& instance, T_func&& func) const
  15. {
  16. auto per_split = parameters_type::get_per_split_count();
  17. auto total_count = instance.subscribed_count();
  18. auto split_count = (total_count + per_split - 1) / per_split;
  19. executor_proxy<T_context, T_instance> ep { context, instance, split_count, per_split };
  20. func(instance, ep);
  21. }
  22. };
  23. } } } }