Class ParallelQueryExtensions
- Namespace
- KeenEyes
- Assembly
- KeenEyes.Core.dll
Provides parallel iteration extensions for query builders.
public static class ParallelQueryExtensions
- Inheritance
-
ParallelQueryExtensions
- Inherited Members
Examples
// Process entities with Position and Velocity in parallel
world.Query<Position, Velocity>()
.ForEachParallel<Position, Velocity>((Entity e, ref Position pos, ref Velocity vel) =>
{
pos.X += vel.X * deltaTime;
pos.Y += vel.Y * deltaTime;
});
Remarks
These extension methods enable parallel processing of entities matching a query. Parallelization occurs at the archetype chunk level for optimal cache locality - each chunk is processed by a single thread, preserving cache-friendly access patterns.
For small entity counts, the overhead of parallelization may outweigh benefits. Use the minEntityCount parameter to control the threshold.
Fields
DefaultMinEntityCount
Default minimum entity count before enabling parallel processing.
public const int DefaultMinEntityCount = 1000
Field Value
Methods
ForEachParallelReadOnly<T1>(QueryBuilder, EntityActionReadOnly<T1>, int)
Processes all matching entities in parallel with readonly component access.
public static void ForEachParallelReadOnly<T1>(this QueryBuilder query, EntityActionReadOnly<T1> action, int minEntityCount = 1000) where T1 : struct, IComponent
Parameters
queryQueryBuilderThe query builder.
actionEntityActionReadOnly<T1>The action to execute for each entity.
minEntityCountintMinimum entity count to enable parallelization.
Type Parameters
T1The component type.
ForEachParallelReadOnly<T1, T2>(QueryBuilder, EntityActionReadOnly<T1, T2>, int)
Processes all matching entities in parallel with readonly component access.
public static void ForEachParallelReadOnly<T1, T2>(this QueryBuilder query, EntityActionReadOnly<T1, T2> action, int minEntityCount = 1000) where T1 : struct, IComponent where T2 : struct, IComponent
Parameters
queryQueryBuilderactionEntityActionReadOnly<T1, T2>minEntityCountint
Type Parameters
T1T2
ForEachParallelReadOnly<T1, T2, T3>(QueryBuilder, EntityActionReadOnly<T1, T2, T3>, int)
Processes all matching entities in parallel with readonly component access.
public static void ForEachParallelReadOnly<T1, T2, T3>(this QueryBuilder query, EntityActionReadOnly<T1, T2, T3> action, int minEntityCount = 1000) where T1 : struct, IComponent where T2 : struct, IComponent where T3 : struct, IComponent
Parameters
queryQueryBuilderactionEntityActionReadOnly<T1, T2, T3>minEntityCountint
Type Parameters
T1T2T3
ForEachParallelReadOnly<T1, T2, T3, T4>(QueryBuilder, EntityActionReadOnly<T1, T2, T3, T4>, int)
Processes all matching entities in parallel with readonly component access.
public static void ForEachParallelReadOnly<T1, T2, T3, T4>(this QueryBuilder query, EntityActionReadOnly<T1, T2, T3, T4> action, int minEntityCount = 1000) where T1 : struct, IComponent where T2 : struct, IComponent where T3 : struct, IComponent where T4 : struct, IComponent
Parameters
queryQueryBuilderactionEntityActionReadOnly<T1, T2, T3, T4>minEntityCountint
Type Parameters
T1T2T3T4
ForEachParallel<T1>(QueryBuilder, EntityAction<T1>, int)
Processes all matching entities in parallel.
public static void ForEachParallel<T1>(this QueryBuilder query, EntityAction<T1> action, int minEntityCount = 1000) where T1 : struct, IComponent
Parameters
queryQueryBuilderThe query builder.
actionEntityAction<T1>The action to execute for each entity.
minEntityCountintMinimum entity count to enable parallelization.
Type Parameters
T1The component type.
ForEachParallel<T1, T2>(QueryBuilder, EntityAction<T1, T2>, int)
Processes all matching entities in parallel.
public static void ForEachParallel<T1, T2>(this QueryBuilder query, EntityAction<T1, T2> action, int minEntityCount = 1000) where T1 : struct, IComponent where T2 : struct, IComponent
Parameters
queryQueryBuilderThe query builder.
actionEntityAction<T1, T2>The action to execute for each entity.
minEntityCountintMinimum entity count to enable parallelization.
Type Parameters
T1First component type.
T2Second component type.
ForEachParallel<T1, T2, T3>(QueryBuilder, EntityAction<T1, T2, T3>, int)
Processes all matching entities in parallel.
public static void ForEachParallel<T1, T2, T3>(this QueryBuilder query, EntityAction<T1, T2, T3> action, int minEntityCount = 1000) where T1 : struct, IComponent where T2 : struct, IComponent where T3 : struct, IComponent
Parameters
queryQueryBuilderThe query builder.
actionEntityAction<T1, T2, T3>The action to execute for each entity.
minEntityCountintMinimum entity count to enable parallelization.
Type Parameters
T1First component type.
T2Second component type.
T3Third component type.
ForEachParallel<T1, T2, T3, T4>(QueryBuilder, EntityAction<T1, T2, T3, T4>, int)
Processes all matching entities in parallel.
public static void ForEachParallel<T1, T2, T3, T4>(this QueryBuilder query, EntityAction<T1, T2, T3, T4> action, int minEntityCount = 1000) where T1 : struct, IComponent where T2 : struct, IComponent where T3 : struct, IComponent where T4 : struct, IComponent
Parameters
queryQueryBuilderThe query builder.
actionEntityAction<T1, T2, T3, T4>The action to execute for each entity.
minEntityCountintMinimum entity count to enable parallelization.
Type Parameters
T1First component type.
T2Second component type.
T3Third component type.
T4Fourth component type.