libcurl 中 curl_multi 的演进:从双路并进到 epoll 革命 - 实践
被忽视的科技转折点:7.38.0 的 poll/select 双模式
在 libcurl 的发展史上,2014年发布的7.38.0 版本隐藏着一个关键转折点——它首次实现了 poll() 与 select() 的双模式支持,这一设计被长期误解为仅支持 select。让我们通过源码考古揭开真相:
c
/* lib/select.c (7.38.0) */
#ifdef HAVE_POLL_FINE
r = poll(ufds, nfds, pending_ms); // 直接调用poll
#else
r = select(maxfd+1, ...); // select回退路径
#endif
历史性突破:
当系统支持
poll()时(定义HAVE_POLL_FINE),直接使用原生 poll 系统调用否则自动回退到 select 模拟实现
完美解决 FD_SETSIZE(1024) 限制障碍
误解澄清:早期文献错误描述 7.38.0 仅支持 select,实际它已实现智能双路选择
浙公网安备 33010602011771号