HTTP Post & Get 正在阻止呼叫?

http post & get is blocking call?

本文关键字:呼叫 Post Get HTTP      更新时间:2023-10-16

我在php中看到大多数http代码。

我准备用CURL在c++中编写一些http调用。
想知道http是否天生就是阻塞的(而不是非阻塞的)。
IE,当你发送get/post消息,你的线程被阻塞,直到它得到响应?

如果它不是,有没有一种方法来执行非阻塞http get或post与CURL?

谢谢

HTTP是一个协议,所以它本身并不是阻塞或非阻塞的。在HTTP中,唯一类似于"阻塞行为"的是你不能在同一个管道中同时发送两个请求或两个响应——你必须等待请求完成后再发送另一个。

所以你关于阻塞操作的真正问题应该是关于CURL的——它是否允许非阻塞IO?

答案是libcurl有一个叫做"多接口"的东西,它允许你使用它而不阻塞:http://curl.haxx.se/libcurl/c/libcurl-multi.html

如果你更喜欢面向异步IO设计的库,你可以看看Boost.ASIO。我自己从来没用过,但它似乎很流行:http://www.boost.org/doc/libs/1_46_1/doc/html/boost_asio.html