Ну чот типа (1..10).Select(...)
можно, но для него нет селекта
Окей, какой щас модный способ написать условно (15...25).Select(num => createJob(num))
даже если бы был (можно свой метод расширения сделать) то этот самый синтаксис потом превращается в создание System.Range который поддерживает индексацию с конца (ака (1..^1)) и в этом случае типа хз что делать
это же твой селект, ты можешь найти того, кто так написал и дать ему леща
или анализатор написать чтобы с моим селектом не писали ренжи с конца, но это какой-то фшарп уже
Сделай метод расширение GetEnumerator(this Range range) и вперде
и шо дальше? он же хочет selectик юзать
И ад ним уже будет селект как везде
// See https://aka.ms/new-console-template for more information using System.Diagnostics; var sw = Stopwatch.StartNew(); var tasks = new List<Task>(); var count = 0L; async Task Job() { await Task.Yield(); var s = 0; for (var j = 0; j < 1000000; j++) { s += j; } Interlocked.Add(ref count, s); } for (var i = 0; i < 50_000; i++) { tasks.Add(Job()); } await Task.WhenAll(tasks); Console.WriteLine(sw.Elapsed);
Зачем await Task.Yield() ?
Чтобы отправить таск на тредпул. Иначе у тебя просто прямо в цикле все таски закомплитятся.
Task.Run для ленивых и хитрожопых
Чот Task.Run выглядит надежней
Обсуждают сегодня