2017-07-27 67 views

回答

0

APR鉤子非常高效,掛鉤的調用是一個擴展爲循環遍歷一個函數指針數組並調用它的宏。

#define APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(ns,link,ret,name,args_decl,args_use,decline) \ 
APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ns,link,name) \ 
link##_DECLARE(ret) ns##_run_##name args_decl \ 
    { \ 
    ns##_LINK_##name##_t *pHook; \ 
    int n; \ 
    ret rv; \ 
\ 
    if(!_hooks.link_##name) \ 
     return decline; \ 
\ 
    pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \ 
    for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \ 
     { \ 
     rv=pHook[n].pFunc args_use; \ 
\ 
     if(rv != decline) \ 
      return rv; \ 
     } \ 
    return decline; \ 
    } 

所以真的沒有理由從性能的角度來避免它們。

+0

感謝您的回答!我會嘗試並測試! – Sapete

相關問題