2013-03-09 181 views
10

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

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

对我来说,重要的是我要确保属性中包含回复的数据已经存在,或者有可能仍然存在此属性中的旧数据,因为回调函数没有但被称为。

我意识到我的解释不是很清楚,所以如果你不明白,请让我知道,我会尝试重新修改它。

谢谢!

+0

的回调将为您传递给函数内部调用。 – 2013-03-09 14:26:14

+0

所以你的意思是我滥用词回调函数?我只是告诉curl,当数据进来时,需要将这些数据传递给某个函数。我认为这也是一个回调函数。但是你传递回调函数来curl_easy_setopt()。请求的所有选项都在curl_easy_perform()之前设置。我只想知道curl_easy_perform()是否阻塞,直到请求被处理。 – Silver 2013-03-09 14:50:34

回答

11

是否curl_easy_perform()块,直到整个请求发送和 的答复回调函数

是处理,即正是它做什么。

(如果您更希望非阻塞行为,libcurl's multi interface是要走的路。)

+0

请看看我关于'curl_multi_ *'接口的问题:http://stackoverflow.com/questions/24288513/how-to-do-curl-multi-perform-asynchronously-in-c – 2014-06-18 14:54:05

相关问题