← Каталог
Task и async/await в C# — Сколько `Task` можно создать на практике
Фрагмент из «Task и async/await в C#»: Сколько `Task` можно создать на практике.
// Ограничение параллелизма: одновременно работает до 32 задач
var gate = new SemaphoreSlim(32);
var tasks = items.Select(async item =>
{
await gate.WaitAsync(ct);
try
{
await ProcessAsync(item, ct);
}
finally
{
gate.Release();
}
});
await Task.WhenAll(tasks); // Ограничение параллелизма: одновременно работает до 32 задач
var gate = new SemaphoreSlim(32);
var tasks = items.Select(async item =>
{
await gate.WaitAsync(ct);
try
{
await ProcessAsync(item, ct);
}
finally
{
gate.Release();
}
});
await Task.WhenAll(tasks);