Table of Contents

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

int

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

query QueryBuilder

The query builder.

action EntityActionReadOnly<T1>

The action to execute for each entity.

minEntityCount int

Minimum entity count to enable parallelization.

Type Parameters

T1

The 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

query QueryBuilder
action EntityActionReadOnly<T1, T2>
minEntityCount int

Type Parameters

T1
T2

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

query QueryBuilder
action EntityActionReadOnly<T1, T2, T3>
minEntityCount int

Type Parameters

T1
T2
T3

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

query QueryBuilder
action EntityActionReadOnly<T1, T2, T3, T4>
minEntityCount int

Type Parameters

T1
T2
T3
T4

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

query QueryBuilder

The query builder.

action EntityAction<T1>

The action to execute for each entity.

minEntityCount int

Minimum entity count to enable parallelization.

Type Parameters

T1

The 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

query QueryBuilder

The query builder.

action EntityAction<T1, T2>

The action to execute for each entity.

minEntityCount int

Minimum entity count to enable parallelization.

Type Parameters

T1

First component type.

T2

Second 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

query QueryBuilder

The query builder.

action EntityAction<T1, T2, T3>

The action to execute for each entity.

minEntityCount int

Minimum entity count to enable parallelization.

Type Parameters

T1

First component type.

T2

Second component type.

T3

Third 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

query QueryBuilder

The query builder.

action EntityAction<T1, T2, T3, T4>

The action to execute for each entity.

minEntityCount int

Minimum entity count to enable parallelization.

Type Parameters

T1

First component type.

T2

Second component type.

T3

Third component type.

T4

Fourth component type.