同步、异步、阻塞、非阻塞的理解
2016-12-06 20:02
337 查看
同步/异步主要针对C端:
同步:所谓同步,就是在c端发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。
例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事
异步:
异步的概念和同步相对。当c端一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。
例如 ajax请求(异步): 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕
阻塞/非阻塞主要针对S端:
阻塞阻塞调用是指调用结果返回之前,当前线程会被挂起(线程进入非可执行状态,在这个状态下,cpu不会给线程分配时间片,即线程暂停运行)。函数只有在得到结果之后才会返回。
非阻塞
非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。
程序上的理解:
同步和异步的概念描述的是用户线程与内核的交互方式:同步是指用户线程发起IO请求后需要等待或者轮询内核IO操作完成后才能继续执行;而异步是指用户线程发起IO请求后仍继续执行,当内核IO操作完成后会通知用户线程,或者调用用户线程注册的回调函数。阻塞和非阻塞的概念描述的是用户线程调用内核IO操作的方式:阻塞是指IO操作需要彻底完成后才返回到用户空间;而非阻塞是指IO操作被调用后立即返回给用户一个状态值,无需等到IO操作彻底完成。
下面是知乎的例子:
出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。老张把水壶放到火上,立等水开。(同步阻塞)
老张觉得自己有点傻
老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)
老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪音。
老张把响水壶放到火上,立等水开。(异步阻塞)
老张觉得这样傻等意义不大
老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶。(异步非阻塞)
老张觉得自己聪明了。
相关文章推荐
- 怎样理解阻塞非阻塞与同步异步的区别?
- PHP-Socket-阻塞与非阻塞,同步与异步概念的理解
- 怎样理解阻塞非阻塞与同步异步的区别?
- 并发,同步,异步,互斥,阻塞,非阻塞的理解
- 同步,异步,阻塞,非阻塞的一点理解
- 同步、异步、阻塞、非阻塞---我的理解
- 【socket编程】如何理解同步异步与阻塞非阻塞的区别(转)
- 理解同步异步与阻塞非阻塞
- 快速理解异步/同步 与 阻塞/非阻塞
- 网络编程中阻塞与非阻塞,同步与异步、I/O模型的理解
- 同步,异步,阻塞,非阻塞的理解
- [转]理解阻塞非阻塞与同步异步
- 怎样理解阻塞非阻塞与同步异步的区别?
- 对于阻塞和非阻塞,同步和异步的理解
- 网络编程中阻塞与非阻塞、同步与异步、I/O模型的理解
- 同步/异步、阻塞/非阻塞的理解
- 理解阻塞非阻塞与同步异步的区别
- 同步、异步、阻塞、非阻塞---我的理解
- 同步,异步,阻塞,非阻塞,BIO,AIO,NIO 理解
- PHP-Socket-阻塞与非阻塞,同步与异步概念的理解