探討 Async/Await 對即發即忘任務排程的影響
此分析檢查了非同步/等待的複雜性,特別是在「即發即棄」場景中。 隨附的程式碼(此處未顯示)說明了不同的方法如何影響任務調度和執行。
一勞永逸:簡單的忽略
第一個範例 (#1) 展示了基本的即發即棄操作。 Callee
方法非同步執行,呼叫者無需等待其結論。
等待完成
相反,第二個範例 (#2) 示範了等待 Callee
結果的傳統方法。 呼叫者暫停執行,直到非同步操作完成。
Task.Run 與非同步呼叫:比較
範例 #3 和 #5 將透過 Callee
直接呼叫 Task.Run
與在委託中使用非同步 lambda 進行比較。 雖然語法不同,但兩者都在線程池線程上啟動 Callee
,以“即發即忘”的方式操作。
非同步 Lambda 和執行緒池執行緒
範例 #4 和 #6 使用帶有非同步 lambda 的 Task.Run
。 lambda 在執行緒池執行緒上並發運行。 然而,呼叫者等待 lambda 完成,確保後續操作在 Callee
完成之前不會開始。
以上是Async/Await 如何影響「即發即忘」場景中的任務排程?的詳細內容。更多資訊請關注PHP中文網其他相關文章!