This示例代码包含:
curl_multi_timeout(multi_handle, &curl_timeo);
if(curl_timeo >= 0) {
timeout.tv_sec = curl_timeo / 1000;
if(timeout.tv_sec > 1)
timeout.tv_sec = 1;
else
timeout.tv_usec = (curl_timeo % 1000) * 1000;
}
为什么 tv_sec
被裁剪为 1 秒?为什么 curl_multi_timeout()
返回的值不按原样使用(除以 1000 后)?
假设上述情况有充分的理由,那么是否存在您不会将该值限制为 1 秒的情况?那是什么情况?
最佳答案
代码只是为稍后调用 select()
设置了最长等待时间。如果有的话,这看起来像一个错误。看起来代码正在保护自己免受来自 curl_multi_timeout()
的不合理答案的影响。我的猜测是编码员在想,“如果 curl 超时函数返回的时间超过一分钟,那么就不要再等了。” ...然后将一分钟打错为一秒。它可能应该做
if (timeout.tv_sec > 60) {
timeout.tv_sec = 60;
else if (timeout.tv_sec == 0) {
timeout.tv_usec = curl_timeo * 1000;
}
由于 curl_multi_timeout()
返回的是毫秒,因此不需要 1000 的模数,因此如果 tv_sec
为零,则意味着返回值在 0 - 999 的范围内.
关于c - 为什么要改变 curl_multi_timeout() 的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5852784/