同步和异步的区别
面试遇到有关同步和异步的问题。这部分大家都在用,但是如果要怎样定义恐怕大部分人都不知道。另外对阻塞和非阻塞也是比较模糊
同步类似于打电话问女生约不约?你只有打通并得到她的回复才继续你的下一步。
而异步就是你发个微信问家里要生活费,这时你不管有没有得到生活费,你都会进行下一步操作(去吃饭或者上课)。
具体的定义如下(源自网络):
同步(Sync)
所谓同步,就是发出一个功能调用时,在没有得到结果之前,该调用就不返回或继续执行后续操作。
异步(Async)
异步与同步相对,当一个异步过程调用发出后,调用者在没有得到结果之前,就可以继续执行后续操作。当这个调用完成后,一般通过状态、通知和回调来通知调用者。对于异步调用,调用的返回并不受调用者控制。
对于通知调用者的三种方式,具体如下:
状态
即监听被调用者的状态(轮询),调用者需要每隔一定时间检查一次,效率会很低。
通知
当被调用者执行完成后,发出通知告知调用者,无需消耗太多性能。
回调
与通知类似,当被调用者执行完成后,会调用调用者提供的回调函数。