我試圖了解 curl_multi_perform 的作業原理。檔案說:
此函式以非阻塞方式對所有需要注意的添加句柄執行傳輸。簡單句柄之前已通過 curl_multi_add_handle 添加到多句柄中。
當應用程式發現 multi_handle 有可用的資料或超時已過時,應用程式應呼叫 此函式來讀取/寫入現在要讀取或寫入的任何內容等。
問題 1:“應用程式應該呼叫”是什么意思?應用程式如何導致某些事情?你的意思是程式員應該打電話?
好的,我找到了兩個簡單的用法示例——“curl_multi_perform”:
1 - https://everything.curl.dev/libcurl/drive/multi
int transfers_running;
do {
curl_multi_wait ( multi_handle, NULL, 0, 1000, NULL);
curl_multi_perform ( multi_handle, &transfers_running );
} while (transfers_running);
2 -在此處輸入鏈接描述
int still_running;
do {
CURLMcode mc = curl_multi_perform(multi_handle, &still_running);
if(!mc && still_running)
/* wait for activity, timeout or "nothing" */
mc = curl_multi_poll(multi_handle, NULL, 0, 1000, NULL);
if(mc) {
fprintf(stderr, "curl_multi_poll() failed, code %d.\n", (int)mc);
break;
}
/* if there are still transfers, loop! */
} while(still_running);
-第一:
- 在第一個示例中 curl_multi_perform 在 curl_multi_wait 之后呼叫。
- 在第二個例子中 curl_multi_perform 在 curl_multi_wait 之前被呼叫。
什么都不清楚。
- 其次:
為什么我需要在回圈中呼叫 curl_multi_perform ?我不明白。
為什么一個電話還不夠?
uj5u.com熱心網友回復:
問題 1:“應用程式應該呼叫”是什么意思?應用程式如何導致某些事情?你的意思是程式員應該打電話?
程式員不呼叫函式。程式員撰寫程式來告訴計算機該做什么。所以這意味著程式員應該撰寫代碼來告訴應用程式呼叫該函式。
- 在第一個示例中 curl_multi_perform 在 curl_multi_wait 之后呼叫。
- 在第二個例子中 curl_multi_perform 在 curl_multi_wait 之前被呼叫。
任何一個命令都有效。正如檔案所說:
該函式不需要實際有任何資料可供讀取或可以寫入資料,可以呼叫它以防萬一。
如果沒有可用的東西,它會立即回傳,更新transfers_running.
為什么我需要在回圈中呼叫 curl_multi_perform ?我不明白。
因為正在進行多次傳輸。curl_multi_wait()一旦有任何資料可用,就會回傳。處理完該資料后,您需要繼續等待其他傳輸。
此外,這不會等待傳輸完成,它會在到達時處理部分資料。因此,您必須不斷呼叫它,直到您發送或接收所有內容為止。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/386854.html
上一篇:減小字串的大小
