[译]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 ...
随机推荐
- Servlet开发(1)
Servlet开发 Servlet引入: 百度百科详细servlet介绍: 重点概括:servlet运行在服务器上,处理用户请求. 我们使用response来获取一个写方法 PrintWriter o ...
- 创建简单的spring-mvc项目
1.第一步:创建项目 new—>Dynamic Web Project 项目创建成功后,展示如图: 2.第二步:导入springmvc的jar包和common-logging.jar 3.第三步 ...
- cogs 48. [NOIP2007] 字符串的展开
48. [NOIP2007] 字符串的展开 ★☆ 输入文件:expand.in 输出文件:expand.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] 在初赛普 ...
- 【python自制】让大白成为你的个人助手!
我做这个软件就是要让卖萌进行究竟! 官方站点:http://www.jackeriss.com/companions.htm GitHub:https://github.com/Jackeriss/C ...
- CentOS 7加强安全性:
CentOS 7加强安全性:1. 更改 root 密码************************************************************************* ...
- JSTL简单入门学习实例
Maven依赖: <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</ ...
- Ubuntu如何开启root账户登录
1 首先设置root密码,利用现有管理员帐户登陆Ubuntu,在终端执行命令:sudo passwd root,接着输入密码和root密码,重复密码.这样就有了可用的root用户. 2 打开一个终 ...
- android XXXActivity和getApplicationContext()差别
从接触android起,到处都能看到context(上下文)的身影,查看源代码之后你会发现,它仅仅是个抽象类,详细实现都在ContextWrapper实现. 当你去查看android的源代码时,你会发 ...
- 安装ubuntu后启动黑屏
我是在windows7上的一个空暇盘上安装ubuntu 14.安装后重新启动没有ubuntu的启动项,然后用easybcd生成启动项,重新启动发现果然有,可是选择之后黑屏. 百度半天无果.后来无意发现 ...
- .net的程序的逆向分析。
背景:碰到一个由c#写的exe,由于之前没有分析过.net的程序,记录下分析流程. 1)peid加载判断类型,可以看出没有加壳. 2)搜索c#的反编译以及调试工具. 1.NET.Reflector以及 ...