add IterateParallel extension method

This commit is contained in:
Mikhail 2023-06-11 23:18:56 +08:00
parent d4d0a888ca
commit 71bdcaa770
2 changed files with 93 additions and 79 deletions

14
src/EcsGroupExtensions.cs Normal file
View File

@ -0,0 +1,14 @@
namespace DCFApixels.DragonECS
{
public static class EcsGroupExtensions
{
public static void IterateParallel(this EcsGroup self, ThreadWorkerHandler worker, int minSpanSize)
{
IterateParallel(self, worker, minSpanSize);
}
public static void IterateParallel(this EcsReadonlyGroup self, ThreadWorkerHandler worker, int minSpanSize)
{
ThreadRunner.Run(worker, self, minSpanSize);
}
}
}

View File

@ -1,7 +1,7 @@
using DCFApixels.DragonECS; namespace DCFApixels.DragonECS
internal static class ThreadRunner
{ {
internal static class ThreadRunner
{
private readonly static int _maxThreadsCount; private readonly static int _maxThreadsCount;
private static ThreadReacord[] _threads; private static ThreadReacord[] _threads;
@ -87,8 +87,6 @@ internal static class ThreadRunner
_worker = null; _worker = null;
} }
public delegate void ThreadWorkerHandler(ReadOnlySpan<int> entities);
private struct ThreadReacord private struct ThreadReacord
{ {
public Thread thread; public Thread thread;
@ -98,4 +96,6 @@ internal static class ThreadRunner
public int start; public int start;
public int size; public int size;
} }
}
public delegate void ThreadWorkerHandler(ReadOnlySpan<int> entities);
} }