[英]Libcurl - What does "curl_multi_perform"
我试图了解 curl_multi_perform 是如何工作的。 文档说:
此 function 以非阻塞方式对所有需要注意的添加句柄执行传输。 简单句柄之前已通过 curl_multi_add_handle 添加到多句柄中。
当应用程序发现有可用于 multi_handle 的数据或超时已过时,应用程序应调用此 function 来读取/写入现在要读取或写入的任何内容等。
问题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? 我不明白。
为什么一个电话不够?
问题1:“应用程序应该调用”是什么意思? 应用程序如何导致某些事情? 你的意思是程序员应该打电话吗?
程序员不调用函数。 程序员编写程序来告诉计算机该做什么。 所以这意味着程序员应该编写代码告诉应用程序调用 function。
- 在第一个示例中 curl_multi_perform 在 curl_multi_wait 之后调用。
- 在第二个例子中 curl_multi_perform 在 curl_multi_wait 之前被调用。
任何一个命令都有效。 正如文档所说:
这个function不需要实际有数据可以读取或者可以写入数据,可以调用以防万一。
如果没有可用的东西,它会立即返回,更新transfers_running
。
为什么我需要循环调用 curl_multi_perform? 我不明白。
因为正在进行多个传输。 curl_multi_wait()
在其中任何一个数据可用时立即返回。 处理完该数据后,您需要继续等待其他传输。
此外,这不会等待传输完成,它会在部分数据到达时对其进行处理。 因此,您必须继续调用它,直到您发送或接收所有内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.