[译]curl_multi_perform
http://curl.haxx.se/libcurl/c/curl_multi_perform.html
curl_multi_perform.3 -- man page
NAME
curl_multi_perform - reads/writes available data from each easy handle
在每个easy handle上读写数据
SYNOPSIS
#include <curl/curl.h>
CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles);
DESCRIPTION
This function handles transfers on all the added handles that need attention in an non-blocking fashion.
这个函数处理所有添加到multi handle中的需要关注的非阻塞式handle
When an application has found out there's data available for the multi_handle or a timeout has elapsed, the application should call this function to read/write whatever there is to read or write right now etc. curl_multi_perform returns as soon as the reads/writes are done. This function does not require that there actually is any data available for reading or that data can be written, it can be called just in case. It will write the number of handles that still transfer data in the second argument's integer-pointer.
当一个程序发现有mulit handle可用的数据或者有超时发生,
程序应该调用curl_multi_perform函数来进行读写数据。
当读写完成,curl_multi_perform会立即返回。
这个函数不需要此时有实际的可读写数据,所以可以在以防万一的时候调用他。
这个函数会写入第二个参数中仍然还是传输数据的handle。
If the amount of running_handles is changed from the previous call (or is less than the amount of easy handles you've added to the multi handle), you know that there is one or more transfers less "running". You can then call curl_multi_info_read to get information about each individual completed transfer, and that returned info includes CURLcode and more. If an added handle fails very quickly, it may never be counted as a running_handle.
如果running_handles参数在函数调用之前修改了(增加或者减少了)
你知道现在仍有一个或者多个handle还在传输数据,你可以调用curl_multi_info_read来获取每个handle的信息,
可以获得的信息包括CURLcode和其他一些信息。
如果在添加handle的时候很快失败了,则handle计数器不会增加。
When running_handles is set to zero (0) on the return of this function, there is no longer any transfers in progress.
如果返回的running_handles为0,则表明现在已经没有handle在传输数据了。
RETURN VALUE
返回值
CURLMcode type, general libcurl multi interface error code.
CURLMcode类型,一般是multi interface的错误码
Before version 7.20.0: If you receive CURLM_CALL_MULTI_PERFORM, this basically means that you should call curl_multi_perform again, before you select() on more actions. You don't have to do it immediately, but the return code means that libcurl may have more data available to return or that there may be more data to send off before it is "satisfied". Do note that curl_multi_perform will return CURLM_CALL_MULTI_PERFORM only when it wants to be called again immediately. When things are fine and there is nothing immediate it wants done, it'll return CURLM_OK and you need to wait for "action" and then call this function again.
在7.20.0之前的版本:
如果收到CURLM_CALL_MULTI_PERFORM,这基本上意味着在你select或者做其他操作之前,需要再次调用curl_multi_perform。
This function only returns errors etc regarding the whole multi stack. Problems still might have occurred on individual transfers even when this function returns CURLM_OK. Use curl_multi_info_read to figure out how individual transfers did.
这个函数只是返回关于整个multi stack的错误码。
问题有可能仍然在某个传输中存在,即使函数返回CURLM_OK。
使用curl_multi_info_read来找出存在问题的传输。
TYPICAL USAGE
主要用途
Most applications will use curl_multi_fdset to get the multi_handle's file descriptors, and curl_multi_timeout to get a suitable timeout period, then it'll wait for action on the file descriptors using select(3). As soon as one or more file descriptor is ready, curl_multi_perform gets called.
大多数程序使用curl_multi_fdset来获取multi handle的文件描述符,
使用curl_multi_timeout来获取一个合适的timeout周期,
然后使用select等待文件描述符上的变化。
一旦一个或者多个文件描述符状态为ready,则调用curl_multi_perform。
[译]curl_multi_perform的更多相关文章
- RxJS + Redux + React = Amazing!(译一)
今天,我将Youtube上的<RxJS + Redux + React = Amazing!>翻译(+机译)了下来,以供国内的同学学习,英文听力好的同学可以直接看原版视频: https:/ ...
- Entity Framework 6 Recipes 2nd Edition 译 -> 目录 -持续更新
因为看了<Entity Framework 6 Recipes 2nd Edition>这本书前面8章的翻译,感谢china_fucan. 从第九章开始,我是边看边译的,没有通读,加之英语 ...
- RxJS + Redux + React = Amazing!(译二)
今天,我将Youtube上的<RxJS + Redux + React = Amazing!>的后半部分翻译(+机译)了下来,以供国内的同学学习,英文听力好的同学可以直接看原版视频: ht ...
- 「译」JUnit 5 系列:条件测试
原文地址:http://blog.codefx.org/libraries/junit-5-conditions/ 原文日期:08, May, 2016 译文首发:Linesh 的博客:「译」JUni ...
- CSharpGL(31)[译]OpenGL渲染管道那些事
CSharpGL(31)[译]OpenGL渲染管道那些事 +BIT祝威+悄悄在此留下版了个权的信息说: 开始 自认为对OpenGL的掌握到了一个小瓶颈,现在回头细细地捋一遍OpenGL渲染管道应当是一 ...
- [译]基于GPU的体渲染高级技术之raycasting算法
[译]基于GPU的体渲染高级技术之raycasting算法 PS:我决定翻译一下<Advanced Illumination Techniques for GPU-Based Volume Ra ...
- Entity Framework 6 Recipes 2nd Edition(9-4)译->Web API 的客户端实现修改跟踪
9-4. Web API 的客户端实现修改跟踪 问题 我们想通过客户端更新实体类,调用基于REST的Web API 服务实现把一个对象图的插入.删除和修改等数据库操作.此外, 我们想通过EF6的Cod ...
- Entity Framework 6 Recipes 2nd Edition(10-1)译->非Code Frist方式返回一个实体集合
存储过程 存储过程一直存在于任何一种关系型数据库中,如微软的SQL Server.存储过程是包含在数据库中的一些代码,通常为数据执行一些操作,它能为数据密集型计算提高性能,也能执行一些为业务逻辑. 当 ...
- 「译」JUnit 5 系列:扩展模型(Extension Model)
原文地址:http://blog.codefx.org/design/architecture/junit-5-extension-model/ 原文日期:11, Apr, 2016 译文首发:Lin ...
随机推荐
- 创建Django项目(四)——模型
2013-08-06 22:24:06| 1.创建模型 (1) "mysite\blog\models.py"文件中的内容: # -*- co ...
- NOIP 2010 机器翻译
P1540 机器翻译 题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于 ...
- java开发中涉及到的调优
JVM内存的调优 默认的Java虚拟机的大小比较小,在对大数据进行处理时java就会报错:java.lang.OutOfMemoryError. 1. Heap设定与垃圾回收Java Heap分为3个 ...
- Eclipse错误:Syntax error on tokens, delete these tokens问题解决
错误:Syntax error on tokens, delete these tokens 出现这样的错误一般是括号.中英文字符.中英文标点.代码前面的空格,尤其是复制粘贴的代码,去掉即可.
- Servlet表单数据处理
以下内容引用自http://wiki.jikexueyuan.com/project/servlet/form-data.html: 当需要从浏览器到Web服务器传递一些信息并最终传回到后台程序时,一 ...
- top命令查看线程信息和jstack使用介绍
top -Hp pid可以查看某个进程的线程信息 -H 显示线程信息,-p指定pid jstack 线程ID 可以查看某个线程的堆栈情况,特别对于hung挂死的线程,可以使用选项-F强制打印dump信 ...
- CSS3实现各种格子纹理效果
<!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/h ...
- AutoCAD如何添加网络打印机 添加公司打印机
1 请确认你已经连接了这台网络打印机,你没法打AutoCAD图纸,但是应该能打Word文档.能打Word文档说明你驱动装好了,通信也没问题,只是AutoCAD的配置不对导致的. 2 点击打印,打印 ...
- HDU 3280 Equal Sum Partitions(二分查找)
Equal Sum Partitions Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- ajax请求同步与异步的区别
//同步请求 $.ajax({ type:'post', url:"<c:url value='/device/org/' />"+val, data:{'org ...