Изначально у меня сложилось такое впечатление, что главное отличие асинхронности от многопоточности в том, что асинхронность не использует дополнительных потоков. То есть, я думал, что она создана для операций ввода-вывода, где операции делаются не процессором, а, например, сервером. Но зашел я на метанит и увидел такую вещь (
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();
}
И вся моя картина рассыпалась, появилась путаница. Ведь для того чтобы считать факториал необходима какая то вычислительная мощность, получается что тут выделяется какой-то поток? Это ведь уже будет многопоточность, в моем понимании. Объясните пожалуйста