@Ignatiy2

Путаница с асинхронными функциями?

Изначально у меня сложилось такое впечатление, что главное отличие асинхронности от многопоточности в том, что асинхронность не использует дополнительных потоков. То есть, я думал, что она создана для операций ввода-вывода, где операции делаются не процессором, а, например, сервером. Но зашел я на метанит и увидел такую вещь (https://metanit.com/sharp/tutorial/13.3.php):
static void Factorial()
        {
            int result = 1;
            for(int i = 1; i <= 6; i++)
            {
                result *= i;
            }
            Thread.Sleep(8000);
            Console.WriteLine($"Факториал равен {result}");
        }
        // определение асинхронного метода
        static async void FactorialAsync()
        {
            Console.WriteLine("Начало метода FactorialAsync"); // выполняется синхронно
            await Task.Run(()=>Factorial());                // выполняется асинхронно
            Console.WriteLine("Конец метода FactorialAsync");
        }
 
        static void Main(string[] args)
        {
            FactorialAsync();   // вызов асинхронного метода
 
            Console.WriteLine("Введите число: ");
            int n = Int32.Parse(Console.ReadLine());
            Console.WriteLine($"Квадрат числа равен {n * n}");
             
            Console.Read();
        }

И вся моя картина рассыпалась, появилась путаница. Ведь для того чтобы считать факториал необходима какая то вычислительная мощность, получается что тут выделяется какой-то поток? Это ведь уже будет многопоточность, в моем понимании. Объясните пожалуйста
  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
Почитайте про асинхронность тут.Её задача сократить задержки
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы