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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socket的阻塞与非阻塞,同步与非同步相关的知识,希望对你有一定的参考价值。

---恢复内容开始---

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

1、同步/异步:主要针对C端

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

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

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

例如 ajax请求(异步):请求通过事件触发->服务器处理(这时浏览器仍然可以做其他事情)->处理完毕

2、阻塞/非阻塞 主要针对S端

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

非阻塞:与阻塞概念相对应,指在不能立即得到结果之前,该函数不会阻塞当前线程,而会立刻返回。

 

以上是关于socket的阻塞与非阻塞,同步与非同步的主要内容,如果未能解决你的问题,请参考以下文章

socket阻塞与非阻塞,同步与异步I/O模型

socket阻塞与非阻塞,同步与异步I/O模型,select与pollepoll比较

聊聊同步异步阻塞与非阻塞

Java 同步与异步-阻塞与非阻塞理解

聊聊同步异步阻塞与非阻塞

理解同步异步阻塞与非阻塞