![](/img/trans.png)
[英]What is the difference between .Wait() vs .GetAwaiter().GetResult()?
[英]What is the difference between Sleep vs Wait in .Net
在我最近的一次采訪中,有人問我關於睡眠與等待的問題。 如果我理解正確,那么睡眠屬於線程,等待與任務有關。 所以,我分別解釋了他們兩個而不是比較。 但面試官並不高興。 他說兩者都可以做幾件事,因此需要進行比較來決定在哪種情況下使用哪個更好。 此外,他期待這兩個在獲取鎖定時的行為。 簡而言之,經過我們的討論,我有兩個基本問題:
上述陳述可能令人困惑,因為我對他所說/期望的內容感到困惑,但我試圖寫下我們討論的任何內容。 因此,如果有人分享他們對上述令人困惑的情況的知識,我將不勝感激。
我們真的可以在 .Net 的上下文中比較 Sleep 和 Wait 嗎? 如果是,那么要點是什么?
是的。 這些似乎是相似的機制,但它們有很大不同,並且旨在用於不同的目的。 主要區別在於:
Task.Wait()
在任務上調用(所以基本上是在對象上) - Thread.Sleep()
在特定線程上調用。Task.Wait()
用於等待設置超時的任務結果。 如果任務沒有在指定的時間范圍內完成,則繼續執行並且方法返回false
。 - Thread.Sleep()
用於凍結線程執行(使其活動與其他線程同步)。 如果它被中斷,則會引發異常,如果它被忽略,則線程將停止。Thread.Sleep()
可以被Thread.Interrupt()
或Thread.Abort()
喚醒 - Task.Wait()
可以被任務取消或其異常中斷。資料來源:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.