Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
boost asio和libcurl多处理器_Boost_Libcurl - Fatal编程技术网

boost asio和libcurl多处理器

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

我在这篇漂亮的帖子中学习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函数,您可以看到:

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 */ 
}