Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
470 views
in Technique[技术] by (71.8m points)

c++ - Is curl_easy_perform() synchronous or asynchronous?

I am using curl to send POST and GET requests and I use callback functions to get the replies from these requests. These callback functions are static member functions which in turn call non static member functions (you can't use non static member functions in curl directly so therefor this workaround).

Since these callback functions can't return a result, I use an attribute in my C++ class to store the reply. This all works fine but now my question. Does curl_easy_perform() block until the entire request is sent AND the reply is processed by the callback function OR does my program continue after curl_easy_perform() and is it getting interrupted somehow when the reply from the request is received?

The importance to me is that I want to be sure that the data in my attribute that should contain the reply is already in there or is it possible that there is still old data in this attribute because the callback function hasn't yet been called.

I realize that my explanation is not very clear so if you don't understand, please let me know and I will try to rephrase it.

Thanks!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Does curl_easy_perform() block until the entire request is send AND the reply is processed by the callback function

Yes, that is exactly what it does.

(If you rather want a non-blocking behavior, libcurl's multi interface is the way to go.)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...