我看到下面的示例代码来自一个关于如何将 libuv 与 libcurl 一起使用的示例
主要功能如下所示:
int main(int argc, char **argv) {
loop = uv_default_loop();
if (argc <= 1)
return 0;
if (curl_global_init(CURL_GLOBAL_ALL)) {
fprintf(stderr, "Could not init cURL\n");
return 1;
}
uv_timer_init(loop, &timeout);
curl_handle = curl_multi_init();
curl_multi_setopt(curl_handle, CURLMOPT_SOCKETFUNCTION, handle_socket);
curl_multi_setopt(curl_handle, CURLMOPT_TIMERFUNCTION, start_timeout);
while (argc-- > 1) {
add_download(argv[argc], argc);
}
uv_run(loop, UV_RUN_DEFAULT);
curl_multi_cleanup(curl_handle);
return 0;
}
我对如何进行事件循环感到困惑。因为它看起来像当我们执行这一行
uv_run(loop, UV_RUN_DEFAULT);
循环中根本没有待处理的事件,所以理论上循环不应该立即退出吗?
回调 handle_socket 应该没有任何更改才能运行。curl_perform()
在 curl 套接字回调的回调中设置的没有机会运行。
我的理解有什么问题吗?