学习node.js回调函数看到的关于阻塞非阻塞、同步异步讲解的很通俗易懂的三篇笔记,下面记录一下:

  • 第一篇

    阻塞和非阻塞,同步和异步是node.js里经常遇到的词汇,我举个简单的例子来说明:

我要看足球比赛,但是妈妈叫我烧水,电视机在客厅,烧水要在厨房。家里有2个水壶,一个是普通的水壶,另一个是水开了会叫的那种水壶。我可以:

用普通的水壶烧,人在边上看着,水开了再去看球。(同步,阻塞)这个是常规做法,但是我看球不爽了。
用普通水壶烧,人去看球,隔几分钟去厨房看看。(同步,非阻塞)这个又大问题,万一在我离开的几分钟水开了,我就麻烦了。
用会叫的水壶,人在边上看着。(异步,阻塞)这个没有问题,但是我太傻了。
用会叫的水壶,人去看球,听见水壶叫了再去看。(异步,非阻塞)这个应该是最好的。
等着看球的我:阻塞

看着电视的我:非阻塞

普通水壶:同步

会叫的水壶:异步

所以,异步往往配合非阻塞,才能发挥出威力。

  • 第二篇

阻塞和非阻塞

1.阻塞:就像单线程cpu一样,一个任务由多个小任务组成,但是只能一个任务接一个任务流程的往想下走,谁在任务排序的前面就谁先执行,执行完了进行下一个,如果遇到错误,下面的小任务就不要做了,一直卡住。

2.非阻塞:就像多线程cpu一样,一个任务由多个小任务组成,可以分开线程来做,哪个线程做分配到的任务,完成了对应的任务就行,某个线程的任务没做完那就做报对应的错,其他的不受影响。

  • 第三篇

同步是指一个时刻仅有一件事件在执行。

异步指一个时刻可以有多个事件同时执行。

阻塞指事件执行必须连续,一个事件从开始到结束不能有其他的事件插入执行。

非阻塞指事件可以分成小段执行,不要求从开始到结束连续执行。

阻塞和非阻塞、同步和异步的三篇笔记相关推荐

  1. 阻塞、非阻塞与同步、异步的区别

    一.同步和异步 二者关注的是消息通信机制 . 所谓同步,就是在发出一个"调用"时,在没有得到结果之前,该*调用*就不返回,但是一旦调用返回,就得到返回值了. 异步则是相反,&quo ...

  2. 那些年让你迷惑的阻塞、非阻塞、异步、同步

    点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! 在IT圈混饭吃,不管你用什么编程语言.从事前端还是后端,阻塞.非阻塞.异步.同步这些概念,都需要清 ...

  3. 阻塞、非阻塞、多路复用、同步、异步、BIO、NIO、AIO 一锅端

    承接上文的操作系统,关于IO会涉及到阻塞.非阻塞.多路复用.同步.异步.BIO.NIO.AIO等几个知识点.知识点虽然不难但平常经常容易搞混,特此Mark下,与君共勉. 1 阻塞跟非阻塞 1.1 阻塞 ...

  4. 线程同步 阻塞 异步 非阻塞(转)

    同步:函数没有执行完不返回,线程被挂起 阻塞:没有收完数据函数不返回,线程也被挂起 异步:函数立即返回,通过事件或是信号通知调用者 非阻塞:函数立即返回,通过select通知调用者 这样看来异步和非阻 ...

  5. python阻塞和非阻塞_Python基础必备知识:同步异步阻塞非阻塞

    一.状态介绍 在了解其他概念之前,我们首先要了解进程的几个状态.在程序运行的过程中,由于被操作系统的调度算法控制,程序会进入几个状态:就绪,运行和阻塞. 就绪(Ready)状态:当进程已分配到除CPU ...

  6. 阻塞 、非阻塞;同步、异步

    同步.异步.阻塞.非阻塞都是和IO(输入输出)有关的概念.最简单的文件读取就是IO操作.而在文件读取这件事儿上,可以有多种方式. 什么是同步和异步 同步请求,A调用B,B的处理是同步的,在处理完之前他 ...

  7. Socket阻塞与非阻塞,同步与异步、I/O模型

    [原文链接] 1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步:       所谓同步,就是在发出一 ...

  8. IO中的阻塞、非阻塞、同步、异步概念分析详解

    目录 1.什么是I/O编程 2.阻塞.非阻塞.同步.异步分析 2.1 什么是同步.异步 2.2 什么是阻塞和非阻塞 2.3 阻塞.非阻塞和同步.异步的区别 2.4 编程实现 3.参考文献 1.什么是I ...

  9. 聊聊同步、异步、阻塞与非阻塞

    近来遇到了一些常见的概念,尤其是网络编程方面的概念,如:阻塞.非阻塞.异步I/O等等,对于这些概念自己也没有太清晰的认识,只是很模糊的概念,说了解吧也了解,但是要让自己准确的描述概念方面的具体细节,却 ...

最新文章

  1. python教程:函数参数中默认值及重要警告
  2. Angle和XBGoost以及Spark的性能对比
  3. 学习笔记(11):Python网络编程并发编程-粘包底层原理分析
  4. 【转】 JMeter学习(二十四)linux启动jmeter,执行./jmeter.sh报错解决方法
  5. 【东营seo】SEO发展下的大机遇
  6. java内容寻址_java – 获取方法对象而不按名称寻址方法
  7. 当Node.js遇见Docker
  8. 【ubuntu】查看服务器上的进程占用GPU情况
  9. win10关闭快速启动_Win10系统做了这3项优化,让你的电脑告别卡顿
  10. 在克隆环境上分离httpd和subversion。
  11. 如何用HTML语言设计进度条,html进度条代码_html5如何实现简单进度条效果
  12. 我国计算机发展历程简述,简述计算机的发展历程??
  13. 中奖人js滚动效果_H5实现中奖记录逐行滚动切换效果
  14. Aspose.Words.FileCorruptedException: The document appears to be corrupted and cannot be loaded
  15. (五)Guarded Suspension模式
  16. CentOS-6.5操作系统环境安装优化
  17. 【整理归纳】Linux中文件的Access,Modify,Change区别
  18. 【机器学习】西瓜书一些关键词
  19. 「HNOI2004」 宠物收养所 - 平衡树Splay
  20. oracle实体视图日志,Oracle案例02——ORA-12034: SCOTT.USER_TABLE 上的实体化视图日志比上次刷新后的内容新...

热门文章

  1. 哪个游戏盒子里有JAVA_1254: 盒子游戏(Java)
  2. 软件作业(3):用户体验分析——基于南通大学教务管理系统微信公众号
  3. linux 清屏命令(3种方式),Linux 清屏命令
  4. opencv_traincascade训练人脸检测
  5. 【无标题】如何去写高质量个人简历模板?哪里能下载免费的简历模板? meimg.com
  6. ADRC控制系统离散形式的稳定性证明
  7. PHP面向对象(OOP)编程完全教程:1.什么是面向对象?
  8. JavaScript 面向对象完全掌握核心原理详解(1) 面向对象导论
  9. CCC3.0学习笔记_数字密钥分享
  10. scratch编程如何学?