Информация об изменениях

Сообщение Re[5]: [Этюд] - синхронный vs асинхронный от 29.09.2021 10:27

Изменено 29.09.2021 10:38 Serginio1

Re[5]: [Этюд] - синхронный vs асинхронный
Здравствуйте, Shmj, Вы писали:

S>Попробуйте убрать LongRunning — без него и первый вариант начнет тормозить.


То есть такой код тоже тормозит?

static async Task Main(string[] args)
        {
            for (int i = 0; i < 1000; i++)
            {
                int iCopy = i;

              await AsyncMethod(iCopy);

            }
            Console.ReadKey();
        }

Тогда у тебя будет ожидаться одна задача. По сути то ты хочешь выполнить все задачи без ожидания выполнения других. Убери await


static async Task Main(string[] args)
        {
   Task[] tasks=new Task[1000];
            for (int i = 0; i < 1000; i++)
            {
                int iCopy = i;

              tasks[i]=AsyncMethod(iCopy);

            }
 await Task.WhenAll(tasks);
            Console.ReadKey();
        }
Re[5]: [Этюд] - синхронный vs асинхронный
Здравствуйте, Shmj, Вы писали:

S>Попробуйте убрать LongRunning — без него и первый вариант начнет тормозить.


То есть такой код тоже тормозит?

static async Task Main(string[] args)
        {
            for (int i = 0; i < 1000; i++)
            {
                int iCopy = i;

              await AsyncMethod(iCopy);

            }
            Console.ReadKey();
        }

Тогда у тебя будет ожидаться одна задача, то есть задачи выполняются последовательно
По сути то ты хочешь выполнить все задачи без ожидания выполнения других. Убери await


static async Task Main(string[] args)
        {
   Task[] tasks=new Task[1000];
            for (int i = 0; i < 1000; i++)
            {
                int iCopy = i;

              tasks[i]=AsyncMethod(iCopy);

            }
 await Task.WhenAll(tasks);
            Console.ReadKey();
        }