4.5 延遲調(diào)用

常被用于資源釋放、解除鎖定以及錯誤處理等操作。

注意:

  • 延遲調(diào)用注冊的是調(diào)用,必須提供執(zhí)行所需參數(shù)(哪怕為空)。參數(shù)值在注冊時被復(fù)制并緩存起來。如對狀態(tài)敏感,可改用指針或閉包。
  • 延遲調(diào)用可修改當(dāng)前函數(shù)命名返回值,但其自身返回值被拋棄。
  • 多個延遲注冊按FILO次序執(zhí)行。

return和panic語句都會終止當(dāng)前函數(shù)流程,引發(fā)延遲調(diào)用。另外,return語句不是ret匯編指令,它會先更新返回值。

誤用

千萬記住,延遲調(diào)用在函數(shù)結(jié)束時才被執(zhí)行。不合理的使用方式會浪費更多資源,甚至造成邏輯錯誤。

性能

相比直接用CALL匯編指令調(diào)用函數(shù),延遲調(diào)用須花費更大代價。這其中包括注冊、調(diào)用等操作,還有額外的緩存開銷。尤其是那些性能要求高且壓力大的算法,應(yīng)避免使用延遲調(diào)用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容