Reusing prime work limiter to limit the number of active threads.

This commit is contained in:
mlemanczyk committed 2025-11-30 15:37:01 +01:00
1 parent fbfc682899
commit 67c1d9309a
1 file changed
+3
@@ -1,6 +1,7 @@
using System.Buffers; using System.Buffers;
using System.Globalization; using System.Globalization;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using PerfectNumbers.Core.Gpu;
using PerfectNumbers.Core.Gpu.Accelerators; using PerfectNumbers.Core.Gpu.Accelerators;
namespace PerfectNumbers.Core; namespace PerfectNumbers.Core;
@@ -296,6 +297,7 @@ public static class MersenneNumberDivisorByDivisorTester
() => () =>
{ {
startGate.Wait(); startGate.Wait();
GpuPrimeWorkLimiter.Acquire();
Console.WriteLine($"Task started for range {rangeStart}"); Console.WriteLine($"Task started for range {rangeStart}");
var gpu = PrimeOrderCalculatorAccelerator.Rent(1); var gpu = PrimeOrderCalculatorAccelerator.Rent(1);
@@ -307,6 +309,7 @@ public static class MersenneNumberDivisorByDivisorTester
PrimeOrderCalculatorAccelerator.Return(gpu); PrimeOrderCalculatorAccelerator.Return(gpu);
Console.WriteLine($"Task finished for range {rangeStart}"); Console.WriteLine($"Task finished for range {rangeStart}");
PrimeOrderCalculatorAccelerator.DisposeAll(); PrimeOrderCalculatorAccelerator.DisposeAll();
GpuPrimeWorkLimiter.Acquire();
}, },
CancellationToken.None, CancellationToken.None,
TaskCreationOptions.DenyChildAttach, TaskCreationOptions.DenyChildAttach,