libcurlでlibuvを使用する方法の例からのサンプルコードを以下に示します
メイン関数は次のようになります。
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 ソケット コールバックのコールバックで設定された が実行される可能性はありません。
私の理解に何か問題がありますか?