Я знаю, что Async и потоки - две разные вещи, поскольку первая предназначена для разработки асинхронных действий, а другая для синхронных или параллельных функций. Но одна вещь, которую я только что заметил, заключается в том, что когда цель заключается в том, чтобы приложение реагировало и живое во время длительных задач, при использовании Async и Await значительно меньше использования ЦП, которые делают старый путь с потоком, подобным этому:Производительность: Async vs Thread
Thread Task1 = new Thread(()=>{
// Do Something
});
Thread Task2 = new Thread(()=>{
Task1.Start();
while(true){
if (!Task1.IsAlive){
// Do something
break;
}
Thread.Sleep(50);
}
});
Я просто хочу знать, нормально ли видеть, что Async имеет более высокую производительность, потому что я думаю, что тот же senario работает в фоновом режиме для задач Async. Используя ту же миллисекунду задержки (50) для обоего:
Thread.Sleep(50) -> thread
await Task.Delay(50) -> Async
на тестовой производительность приложения я наблюдал примерно менее 5% загрузки процессора на Async для выполнения той же операции.
Вы сравниваете апельсины с яблоками. Вы должны уточнить свой вопрос, поскольку ваш пример кода выполняет две разные вещи. –
@YuvalItzchakov: оба кода не запускают две задачи Асинхронно, посмотрите на них еще раз. Нить ждет завершения задачи, прежде чем запускать что-то еще. То же самое делается в Async, как он ожидает. Но Async потребляет меньше CPU. – Ricky
'Thread.Sleep' и' Task.Delay' не делают то же самое. –