非同步/等待:即發即忘與等待完成
理解呼叫者函數和被呼叫非同步函數之間的交互作用對於高效和正確的程式碼至關重要。 讓我們來看看不同的方法:
場景 1:Fire and Forget(簡單): 被呼叫函數 (Callee) 已啟動,但呼叫者 (Caller) 忽略其完成。 呼叫者立即繼續。
場景 2:等待完成: 呼叫方明確等待被呼叫方完成,然後再繼續執行。
現在,我們來介紹一下線程池的複雜性:
場景 3:ThreadPool 執行緒上的「Fire and Forget」: 被呼叫者在執行緒池執行緒上執行,但呼叫者忽略其完成狀態。
場景 4:在 ThreadPool 執行緒上等待完成: 呼叫者耐心等待被呼叫者完成,即使它在執行緒池執行緒上異步運行。
最後,讓我們想想async
關鍵字的影響:
場景 5:在 ThreadPool 執行緒上使用非同步方式「Fire and Forget」: 與場景 3 類似,但聲明了被呼叫者 async
,但其完成仍然被忽略。
場景 6:在 ThreadPool 執行緒上等待非同步完成: 呼叫者利用 await
在繼續之前確保被呼叫者完成,即使被呼叫者在執行緒池執行緒上運行也是如此。 這是最穩健的方法。
以上是即發即忘與非同步/等待中的等待:您應該何時等待非同步任務完成?的詳細內容。更多資訊請關注PHP中文網其他相關文章!