libcurl 配合epoll 的异步并行server原理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了libcurl 配合epoll 的异步并行server原理相关的知识,希望对你有一定的参考价值。

参考技术A 有同步和异步两种方式,而在本文中,重点放在异步方式,并使用epoll进行socket事件管理。

在libcurl官方网站上提供了使用epoll进行事件管理的例子。 Example

步骤如下:

用来设置socket回调和timer回调,sock_cb是socket的回调函数,而multi_timer_cb是timeout之后的回到函数。

write_cb 是在libcurl接收到数据之后调用的回调函数,用来处理接收到的数据。

CURLOPT_PROGRESSFUNCTION 指定的函数正常情况下每秒被libcurl调用一次,为了使 CURLOPT_PROGRESSFUNCTION 被调 用, CURLOPT_NOPROGRESS 必须被设置为false, CURLOPT_PROGRESSDATA 指定的参数将作为 CURLOPT_PROGRESSFUNCTION 指定函数的第一个参数。

// 11. 接收完毕之后,状态变成EPOLLIN,触发event_cb(),调用curl_multi_socket_action()处理

以上是关于libcurl 配合epoll 的异步并行server原理的主要内容,如果未能解决你的问题,请参考以下文章

nginx与epoll

python epoll实现异步socket

epoll IO多路复用(异步阻塞AIO)

linux异步通信之epoll

使用 `read` 和 `epoll` 异步读取套接字

使用epoll方法,用c/c++实现一个FTP服务器