查看完整版本: [-- tcp和http是同步还是异步 --]

QTCN开发网 -> Qt基础编程 -> tcp和http是同步还是异步 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

介农酥 2019-08-12 15:33

tcp和http是同步还是异步

这两天一直没弄明白HTTP是同步还是异步的,当HTTP get请求发出后,到读取响应的槽函数这段时间,本线程是否允许执行其他代码,接受其他线程的信号等,还是一直等到,直到响应完毕。



liulin188 2019-08-12 19:41
qt对于网络的所有实现基本都是异步的,可以自己实现同步阻塞功能
qt提供相关的信号,比如已连接,数据到达,发送,已断开。。

笑颜 2019-08-13 08:25
前段时间,有个客户说FTP连接我们公司的系统不能下载数据,我仔细研究了一下调用过程。
Qt的所有get请求底层都是用线程池实现的,所有相当于基本上就得一个不是你开辟的线程里面。
并且当时研究到qt的ftp请求,会使用HELP指令去获取信息,然而我们系统没实现这个指令并且返回了错误,所以就停止了后续所有请求。(我记得是这样,如果记错了别见怪)

onlyone 2019-08-16 16:23
这个是异步的。如果不是异步,在网络不好时,执行线程就会卡死。如果是主线程执行,主线程就会卡死。
当然你自己也说了,你估计是新开了一个线程,在线程里面执行get,那么如果你的线程本来就是专门为做这件事情,新线程就做这一件事情,那么不能让线程退出。而是要执行类似postEvent的方式进入到消息循环中去。否则请求还没回,线程就退出了,那也有问题。

yunchao630 2019-08-20 10:59
你理解的同步异步可能不对。同步、异步是socket的属性,阻塞和非阻塞是应用逻辑。你应该问的是阻塞与非阻塞。答案是  线程是允许执行其他代码,接受其他线程的信号的,不必一直阻塞在这里

介农酥 2019-08-20 13:22
yunchao630:你理解的同步异步可能不对。同步、异步是socket的属性,阻塞和非阻塞是应用逻辑。你应该问的是阻塞与非阻塞。答案是  线程是允许执行其他代码,接受其他线程的信号的,不必一直阻塞在这里 (2019-08-20 10:59) 

谢谢!


查看完整版本: [-- tcp和http是同步还是异步 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled