2017-07-27 87 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