同步和阻塞是一码事?同步和非阻塞是否矛盾?

同步关注消息通信机制,如表单提交,客户端必须等待服务器响应;异步允许调用者在等待结果时继续执行其他任务,如Ajax请求。阻塞调用会使调用线程被挂起,而非阻塞则不挂起,可以执行其他任务。同步操作有时表现为阻塞,但设置O_NONBLOCK标志可使同步变为非阻塞。同步非阻塞和异步非阻塞强调调用者不等待,而是通过轮询或通知机制获取结果。
摘要由CSDN通过智能技术生成


网上看到也有很多讲解关于同步、异步、阻塞、非阻塞,但众说纷纭,也不太好理解,下面我尝试用简单的几句话来解释这几个概念,如果有误,欢迎指出。

同步、异步关注的是消息通信机制。阻塞、非阻塞关注的是等待消息时调用者的状态。

一、同步

A调用B,A必须等待B的结果返回才能干其它事。简单来说,同步就是必须一件事一件事做,等前一件做完了才能做下一件事。

如:B/S模式中的表单提交,具体过程是:客户端提交请求->等待服务器处理->处理完毕返回,这个过程中客户端(浏览器)不能做其他事。

二、异步

A调用B,A没有得到结果之前,就可以继续执行后续操作。当调用完成后,一般通过状态、通知和回调来通知调用者。

如:B/S模式中的ajax请求,具体过程是:客户端发出ajax请求->服务端处理->处理完毕执行客户端回调,在客户端(浏览器)发出请求后,仍然可以做其他的事

通知调用者的方式 说明
状态 监听被调用者的状态(轮询),调用者需要每隔一定时间检查一次,效率会很低
通知 当被调用者执行完成后,发出通知告知调用者,无需消耗太多性能
回调
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值