Add custom job scheduling and dependency combiners

- Introduce `CombinedDependenciesJob` for efficient dependency handling and memory management
- Add `ScheduleCustom<T>` for user-defined job execution/free logic
- Refactor `JobInfo` and `JobDataPool<T>` for safer resource management and custom function support
- Improve SPMD extension type constraint formatting
- Update SPMD project content path and increment assembly versions
- Add unit tests for combined dependencies and custom jobs
- Remove `[Timeout]` from tests to prevent spurious failures
- Add TODO for future `WideLane` optimizations
- Replace legacy .sln with .slnx for better solution structure
This commit is contained in:
2026-05-03 15:17:19 +09:00
parent 997aab299c
commit fe8362e029
16 changed files with 230 additions and 219 deletions

View File

@@ -7,7 +7,6 @@ namespace Misaki.HighPerformance.Test.UnitTest.Buffer;
public class TestAllocationManager
{
[TestMethod]
[Timeout(1000, CooperativeCancellation = true)]
public void PersistentAllocationTest()
{
var ptr1 = new MemoryBlock(1024, 8, AllocationHandle.Persistent);
@@ -24,7 +23,6 @@ public class TestAllocationManager
}
[TestMethod]
[Timeout(1000, CooperativeCancellation = true)]
public void TempAllocationTest()
{
var ptr1 = new MemoryBlock(1024, 8, AllocationHandle.Temp);
@@ -43,7 +41,6 @@ public class TestAllocationManager
}
[TestMethod]
[Timeout(1000, CooperativeCancellation = true)]
public void FreeListAllocationTest()
{
var ptr1 = new MemoryBlock(1024, 8, AllocationHandle.FreeList);
@@ -60,7 +57,6 @@ public class TestAllocationManager
}
[TestMethod]
[Timeout(1000, CooperativeCancellation = true)]
public void StackAllocationTest()
{
var thread = new Thread(() =>

View File

@@ -6,7 +6,6 @@ namespace Misaki.HighPerformance.Test.UnitTest.Buffer;
public unsafe class TestFreeList
{
[TestMethod]
[Timeout(1000, CooperativeCancellation = true)]
public void SingleThreadedAllocFreeTest()
{
using var freeList = new FreeList(8, 1024);
@@ -37,7 +36,6 @@ public unsafe class TestFreeList
}
[TestMethod]
[Timeout(1000, CooperativeCancellation = true)]
public void MultiThreadedAllocSameThreadFreeTest()
{
const int threadCount = 8;
@@ -65,7 +63,6 @@ public unsafe class TestFreeList
}
[TestMethod]
[Timeout(1000, CooperativeCancellation = true)]
public void MultiThreadedCrossThreadFreeTest()
{
const int producerCount = 4;
@@ -123,7 +120,6 @@ public unsafe class TestFreeList
}
[TestMethod]
[Timeout(1000, CooperativeCancellation = true)]
public void OverflowCacheTest()
{
// Set maxConcurrencyLevel to 1, but use more threads
@@ -148,7 +144,6 @@ public unsafe class TestFreeList
}
[TestMethod]
[Timeout(1000, CooperativeCancellation = true)]
public void LargeAllocationTest()
{
using var freeList = new FreeList(8, 1024);
@@ -162,7 +157,6 @@ public unsafe class TestFreeList
}
[TestMethod]
[Timeout(1000, CooperativeCancellation = true)]
public void ZeroSizeAllocation_ReturnsNull()
{
using var freeList = new FreeList(8, 1024);
@@ -170,7 +164,6 @@ public unsafe class TestFreeList
}
[TestMethod]
[Timeout(1000, CooperativeCancellation = true)]
public void InvalidAlignment_Throws()
{
using var freeList = new FreeList(8, 1024);
@@ -178,7 +171,6 @@ public unsafe class TestFreeList
}
[TestMethod]
[Timeout(1000, CooperativeCancellation = true)]
public void DoubleDispose_IsSafe()
{
var freeList = new FreeList(8, 1024);