boost asio和libcurl多处理器
我在这篇漂亮的帖子中学习libcurl和boost:asio 虽然我确实有一个关于源代码的问题: 主要功能如下所示: 我看到没有地方调用curl函数curl\u multi\u perform 任务一开始是如何开始的 我看到没有地方调用curl函数curl\u multi\u perform 这是因为此示例代码使用了另一个API,名为: 然后使用curl\u multi\u socket\u动作代替curl\u multi\u perform 有关更多详细信息,请参阅的MULTI_SOCKET部分 任务一开始是如何开始的 这一神奇之处在于CURLMOPT_TIMERFUNCTION选项、函数和相应的计时器逻辑 如果您参考静态void new_connchar*url,GlobalInfo*g函数,您可以看到:boost asio和libcurl多处理器,boost,libcurl,Boost,Libcurl,我在这篇漂亮的帖子中学习libcurl和boost:asio 虽然我确实有一个关于源代码的问题: 主要功能如下所示: 我看到没有地方调用curl函数curl\u multi\u perform 任务一开始是如何开始的 我看到没有地方调用curl函数curl\u multi\u perform 这是因为此示例代码使用了另一个API,名为: 然后使用curl\u multi\u socket\u动作代替curl\u multi\u perform 有关更多详细信息,请参阅的MULTI_SOCKET
static void new_conn(char *url, GlobalInfo *g )
{
/* ... */
rc = curl_multi_add_handle(g->multi, conn->easy);
mcode_or_die("new_conn: curl_multi_add_handle", rc);
/* note that the add_handle() will set a time-out to trigger very soon so
that the necessary socket_action() call will be called by this app */
}
所以在实践中,一切都是从打电话给new_conn开始的。。。这反过来将触发多定时器cb,然后调用定时器cb
计时器\u cb执行curl\u multi\u socket\u动作
static void new_conn(char *url, GlobalInfo *g )
{
/* ... */
rc = curl_multi_add_handle(g->multi, conn->easy);
mcode_or_die("new_conn: curl_multi_add_handle", rc);
/* note that the add_handle() will set a time-out to trigger very soon so
that the necessary socket_action() call will be called by this app */
}