请教下关于 阻塞 非阻塞 异步 同步 这几个概念的区别

151 views
Skip to first unread message

maxwa...@gmail.com

unread,
Jan 19, 2017, 8:43:10 AM1/19/17
to openresty
openresty一直强调地是异步非阻塞的应用。的确很吸引人,所以最近在查资料到底什么叫异步非阻塞?也许对于工程师而言,这种理论上面的问题大家都不是喜欢那么深究,毕竟大家强调地是会用就行,管它呢?但我想哪天要是面试被问到那就完了,而且这也是反映一个工程师基本功的问题?
http://blog.csdn.net/historyasamirror/article/details/5778378  ---- 这个博客是我找的一篇相关资料,应该还是非常仔细的。
所以,另外想请教下春哥,和其它大神对这几个概念的看法?谢谢。

Ming

unread,
Jan 19, 2017, 9:11:23 PM1/19/17
to open...@googlegroups.com
 我来尝试解释下。先明确下概念,对于说同步和异步,其实我们指的是『同步操作』和『异步操作』;对于阻塞和非阻塞,其实指的是『阻塞操作系统线程』和『不阻塞操作系统线程』。
 对应到 OpenResty 里面,ngx.timer.at 就是一个异步操作,非阻塞,这种就是 nonblocking I/O;而 cosocket,就是同步操作,也是非阻塞,它也是 nonblocking I/O。
所以说 OpenResty 是异步非阻塞的,并不正确。OpenResty 的所有操作都是  nonblocking I/O,不会造成任何的阻塞。

--
--
邮件来自列表“openresty”,专用于技术讨论!
订阅: 请发空白邮件到 openresty+subscribe@googlegroups.com
发言: 请发邮件到 open...@googlegroups.com
退订: 请发邮件至 openresty+unsubscribe@googlegroups.com
归档: http://groups.google.com/group/openresty
官网: http://openresty.org/
仓库: https://github.com/agentzh/ngx_openresty
教程: http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html

maxwa...@gmail.com

unread,
Jan 19, 2017, 9:39:56 PM1/19/17
to openresty
首先,还是非常感谢老师的热心解答。那篇csdn上面的博客引用到了《unix网络编程》这本书上的定义

Stevens给出的定义(其实是POSIX的定义)是这样子的:
A synchronous I/O operation causes the requesting process to be blocked until that I/O operationcompletes;
An asynchronous I/O operation does not cause the requesting process to be blocked; 

我看了好几遍这篇文章,文章中的阻塞(blocked)  应该针对地是 用户进程process。而老师的解答是针对的操作系统,而且博客中,

blocking IO,non-blocking IO,IO multiplexing都属于synchronous IO "

概念上就存在比较大的区别了。我并非站在博客的角度上来反对老师的解析,纯粹是进行交流学习才提出自己的疑惑的。也许这种问题太过学术理论化,咱不纠结也不影响干活。不管怎样,感谢老师的解答。



在 2017年1月20日星期五 UTC+8上午10:11:23,WenMing写道:
 我来尝试解释下。先明确下概念,对于说同步和异步,其实我们指的是『同步操作』和『异步操作』;对于阻塞和非阻塞,其实指的是『阻塞操作系统线程』和『不阻塞操作系统线程』。
 对应到 OpenResty 里面,ngx.timer.at 就是一个异步操作,非阻塞,这种就是 nonblocking I/O;而 cosocket,就是同步操作,也是非阻塞,它也是 nonblocking I/O。
所以说 OpenResty 是异步非阻塞的,并不正确。OpenResty 的所有操作都是  nonblocking I/O,不会造成任何的阻塞。
在 2017年1月19日 下午9:43, <maxwa...@gmail.com>写道:
openresty一直强调地是异步非阻塞的应用。的确很吸引人,所以最近在查资料到底什么叫异步非阻塞?也许对于工程师而言,这种理论上面的问题大家都不是喜欢那么深究,毕竟大家强调地是会用就行,管它呢?但我想哪天要是面试被问到那就完了,而且这也是反映一个工程师基本功的问题?
http://blog.csdn.net/historyasamirror/article/details/5778378  ---- 这个博客是我找的一篇相关资料,应该还是非常仔细的。
所以,另外想请教下春哥,和其它大神对这几个概念的看法?谢谢。

--
--
邮件来自列表“openresty”,专用于技术讨论!
订阅: 请发空白邮件到 openresty...@googlegroups.com
发言: 请发邮件到 open...@googlegroups.com
退订: 请发邮件至 openresty+...@googlegroups.com

Yaung Gao

unread,
Feb 7, 2017, 8:37:24 AM2/7/17
to open...@googlegroups.com
Ming 老师说的是“操作系统线程 ”,没问题的。

订阅: 请发空白邮件到 openresty+subscribe@googlegroups.com
发言: 请发邮件到 open...@googlegroups.com
退订: 请发邮件至 openresty+unsubscribe@googlegroups.com
Reply all
Reply to author
Forward
0 new messages