socket的阻塞与非阻塞,同步与非同步

网络编程中一般提到四种方式,同步/异步,阻塞/非阻塞。如下对它们的概念进行总结ajax

一、同步/异步:主要针对C端编程

同步:所谓同步,就是在C端发出一个功能调用时,在没有获得结果以前,调用不返回,也就是必须一件一件事作,等前一件作完了才能作下一件事。浏览器

例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回,这个期间客户端浏览器不能干任何事。服务器

异步:当C端一个异步调用发出后,调用者不能当即获得结果,实际处理这个调用的部件在完成后,经过状态,通知和回调来通知调用者。网络

例如 ajax请求(异步):请求经过事件触发->服务器处理(这时浏览器仍然能够作其余事情)->处理完毕异步

二、阻塞/非阻塞 主要针对S端socket

阻塞:阻塞调用是指调用结果返回以前,当前线程会被挂起(线程进入非可执行状态,在这个状态下,CPU 不会给线程分配时间片,及线程暂停运行)。函数只有在获得结果以后才会返回。函数

非阻塞:与阻塞概念相对应,指在不能当即获得结果以前,该函数不会阻塞当前线程,而会马上返回。线程

 注意:事件

socket 默认使用的是非阻塞式异步传输通信方式,对应的MFC的CSocket利用的是面向链接的TCP协议。

相关文章
相关标签/搜索