您的位置:首页 > 其它

基本概念-同步、异步、阻塞、非阻塞

2017-08-08 11:59 295 查看
早上复习了下这几个概念,做一个简单的总结。

主要参考了这篇链接:[聊聊同步、异步、阻塞与非阻塞](ps:这篇写的真心赞啊!大家可直接看这篇)

概述

同步异步主要是从消息通知的机制角度来说的,而阻塞与非阻塞关注的则是等待消息通知时的状态。

也就是说,同步的情况下,是由处理消息者自己去等待消息是否被触发而异步的情况下是由触发机制来通知处理消息者。

简言之:

同步:消息处理着主动等消息

异步:别人通知消息处理着。

(消息:事件完成,事件触发)

举例:同步I/O,异步I/O

同步I/O自己去等I/O完成,在等的过程中,可以阻塞,可以不阻塞。但是如果不阻塞,因为还是要等,所以需要不断切换任务来“看”I/O是否完成,系统有开销。所以,同步非阻塞I/O效率最低。

异步I/O,自己不等I/O完成,而是I/O完成之后,通知消息处理着,后者去处理。显然,异步非阻塞效率最高。

在上文中,同步异步关心的I/O是否完成(即I/O是否可读)消息调用着是怎么知道的,自己等,还是别人告诉你。阻塞非阻塞关心的是不管是自己等,还是别人告诉你。在你知道消息前,线程所处的状态。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: