我知道異步和線程是兩個非常不同的東西,第一個是開發異步行爲,而另一個是同步或並行功能。但是我剛纔注意到的一件事是,當目標是在長時間運行的任務期間保持應用程序響應並且活着時,使用Async和Await時,CPU的使用率會大大減少,並且像這樣使用舊線程:性能:異步vs線程
Thread Task1 = new Thread(()=>{
// Do Something
});
Thread Task2 = new Thread(()=>{
Task1.Start();
while(true){
if (!Task1.IsAlive){
// Do something
break;
}
Thread.Sleep(50);
}
});
我只是想知道是否正常看到異步具有更高的性能,因爲我認爲同一個senario是在異步任務的後臺進行。在I約少5%的CPU使用率觀察到對異步做同樣的動作的性能測試應用
Thread.Sleep(50) -> thread
await Task.Delay(50) -> Async
:使用相同的延遲毫秒(50),用於兩者。
你正在比較橙子蘋果。您需要澄清您的問題,因爲您的代碼示例執行兩個不同的操作。 –
@YuvalItzchakov:沒有兩個代碼異步運行兩個任務,再看一遍。線程在運行其他任務之前等待Task 1完成。同樣在Async中完成,因爲它正在等待。但異步消耗較少的CPU。 – Ricky
'Thread.Sleep'和'Task.Delay'不會做同樣的事情。 –