private static ValueTask<long> skynetValueTaskAsync(long num, long size, long div)
{
if (size == 1)
{
return num;
}
else
{
long subtotal = 0;
List<Task<long>> tasks = null;
for (var i = 0; i < div; i++)
{
var sub_num = num + i * (size / div);
var task = skynetValueTaskAsync(sub_num, size / div, div);
if (task.IsCompleted)
{
subtotal += task.Result;
}
else
{
if (tasks == null)
{
tasks = new List<Task<long>>((int)div);
}
tasks.Add(task.AsTask());
}
}
if (tasks == null)
{
return subtotal;
}
else if (subtotal > 0)
{
tasks.Add(Task.FromResult(subtotal));
}
return Task.WhenAll(tasks).ContinueWith(skynetAggregator);
}
}