理解异步,同步,阻塞,非阻塞之间的关系

来源:互联网 发布:美微网络柠檬视频tv 编辑:程序博客网 时间:2024/05/16 11:53

在学习nodejs时应该会说 nodejs是 异步非阻塞i/o而以前却并不了解这句话的意思 今天要梳理一下这些概念

首先 同步与异步
同步于异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)。
同步:调用者等待被调用者的返回值之后,调用者才继续工作
异步:调用者调用之后被调用者马上返回,但是这里是没有返回结果的,这时候调用者可以进行其他操作,而对于被调用者的返回值则要通过通知调用者或者回调函数来处理

阻塞与非阻塞
关注的是程序在等待调用结果时,调用者所处的状态
阻塞:当被调用者被调用时,调用者被“挂起”,直到返回结果。
非阻塞:当被调用者被调用时,不会阻塞调用者自己。

举个例子 王大爷烧水
王大爷在厨房烧水,从他把水壶放到灶台上开始,他就开始在灶台边上等啊等,直到到水开了。
– 王大爷等水,同步, 王大爷等水的时候不干别的事,阻塞

王大爷觉得这样不好,然后买了个会响的水壶,然后他把水壶放到灶台上,随后他看电视去了,并告诉他老婆张大娘,水开了就去泡茶,然后自己看电视去了
-王大爷放完水壶以后水壶没有马上有结果 ,异步 ,水在烧的时候王大爷在看电视,非阻塞,张大娘泡茶,回调函数

这样一些就清晰多了
感谢这些文章
知乎-怎样理解阻塞非阻塞与同步异步的区别
使用异步 I/O 大大提高应用程序的性能

0 0
原创粉丝点击