我正在用libcurl在C中編寫一個小的下載管理器,並且遇到了一個有趣的問題。看來,我沒有正確理解如何curl_multi_perform
作品到現在爲止,有一次我發現了這個主循環實際上僅下載每處理每秒16昆明植物研究所:在一個主循環中顯示狀態並執行下載
while (1) {
int cmp_rem;
j_recount_speeds();
j_handle_completed();
j_handle_waiting();
curl_multi_perform(j_curlm, &cmp_rem);
j_status();
sleep(1);
}
我有看一些examples on cURL's website涉及多接口,和發現正確的做法是在套接字文件描述符select
上調用curl_multi_perform
一次就緒。儘管如此,我希望能夠以規則的時間間隔運行j_recount_speeds
,j_handle_completed
,j_handle_waiting
和j_status
。我能做到這一點以及我需要在一個主循環中使用curl_multi_perform
,還是需要使用單獨的線程?
請問你能否詳細解釋'select'是如何在'curl_multi_perform'的環境下工作的?由於我在這方面非常陌生,我不確定這是如何工作的以及如何修改我的代碼。根據http://curl.haxx.se/libcurl/c/curl_multi_perform.html的 – 2012-02-23 11:29:55
,你可以調用curl_multi_fdset(http://curl.haxx.se/libcurl/c/curl_multi_fdset.html)來檢索你想要的fdset然後傳遞給select();快速示例將很快公佈。 – tbert 2012-02-23 11:36:39
感謝您的回答。我現在很忙,沒有機會擺弄我的代碼,所以我提前道歉在接受你的答案之前花一些時間。 – 2012-02-24 12:14:58