【问题标题】:Is curl_easy_perform() synchronous or asynchronous?curl_easy_perform() 是同步的还是异步的?
【发布时间】:2013-02-25 00:58:30
【问题描述】:

我使用curl 发送POSTGET 请求,并使用回调函数从这些请求中获取回复。这些callback 函数是静态成员函数,它们依次调用非静态成员函数(您不能直接在curl 中使用非静态成员函数,因此为此解决方法)。

由于这些回调函数不能返回结果,我在我的 C++ 类中使用一个属性来存储回复。这一切都很好,但现在我的问题。 curl_easy_perform() 会阻塞直到整个请求被发送并且回复由回调函数处理,或者我的程序在curl_easy_perform() 之后是否继续,并且在收到请求的回复时它是否会以某种方式中断?

对我来说重要的是,我想确保我的属性中应该包含回复的数据已经存在,或者该属性中是否仍有旧数据,因为回调函数还没有被调用。

我知道我的解释不是很清楚,所以如果你不明白,请告诉我,我会尝试改写它。

谢谢!

【问题讨论】:

  • 将在您传递给它的函数内部调用回调。
  • 所以你的意思是我误用了回调函数这个词?我只是告诉 curl,当数据进入时,它需要将这些数据传递给某个函数。我认为这也是一个回调函数。但是你在 curl_easy_setopt() 中将回调函数传递给 curl。请求的所有选项都在 curl_easy_perform() 之前设置。我只想知道 curl_easy_perform() 在处理请求之前是否会阻塞。

标签: c++ curl libcurl


【解决方案1】:

curl_easy_perform() 会阻塞直到整个请求被发送并且 回复由回调函数处理

是的,正是它的作用。

(如果您更喜欢非阻塞行为,libcurl's multi interface 是您的最佳选择。)

【讨论】:

猜你喜欢
  • 2020-05-15
  • 2020-02-21
  • 2012-12-30
  • 2014-04-25
  • 1970-01-01
  • 1970-01-01
  • 2019-01-17
  • 2017-06-22
  • 1970-01-01
相关资源
最近更新 更多