美文网首页
nodejs 阻塞,非阻塞

nodejs 阻塞,非阻塞

作者: 小白小白啦 | 来源:发表于2018-10-14 17:16 被阅读25次

我发现有些很基础的东西,看了就忘了,有必要记录一下,以防以后忘了再回来看看。
读取一个文件,然后打印出来

阻塞方式

var fs = require("fs");

var data = fs.readFileSync('input.txt');

console.log(data.toString());
console.log("程序执行结束!");

输出

菜鸟教程官网地址:www.runoob.com
程序执行结束!

阻塞的方式就是我(readFileSync)今天不读完这个文件,你们谁都TM的不准动,所以如果这个文件读了5分钟,没办法后面的代码也得老老实实等着,那这样肯定是不行的,这个耗时的代码可以放一边执行,不要影响后面的代码。

非阻塞方式

var fs = require("fs");

fs.readFile('input.txt', function (err, data) {
    if (err) return console.error(err);
    console.log(data.toString());
});

console.log("程序执行结束!");

输出

程序执行结束!
菜鸟教程官网地址:www.runoob.com

这个就是我(console.log)先执行了,你(readFile)那么耗时间还不用CPU不是浪费吗?你就后面在运行把。

一个形象的比喻

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

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

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

  • 看着电视的我:非阻塞

  • 普通水壶:同步

  • 会叫的水壶:异步

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

参考
Node.js 回调函数

相关文章

  • nodejs是什么

    nodejs是什么 nodejs是js runtime使用事件驱动 和 非阻塞I/O 模型 非阻塞I/O 阻塞:...

  • nodejs 阻塞,非阻塞

    我发现有些很基础的东西,看了就忘了,有必要记录一下,以防以后忘了再回来看看。读取一个文件,然后打印出来 阻塞方式 ...

  • 谈论:同步异步阻塞非阻塞.md

    同步/异步:关注的方式(是否主动) 阻塞/非阻塞: 同步阻塞BIO: 同步非阻塞NIO: 异步非阻塞: 异步阻塞:

  • node 异步 I/O

    这篇文章主要讲 nodejs 中的异步 IO,关于同步、异步、阻塞、非阻塞 请移步这里。 事件循环 和 消息队列 ...

  • 阻塞/非阻塞

    阻塞和非阻塞这两个概念与程序(线程)等待消息通知(无所谓同步或者异步)时的状态有关。也就是说阻塞与非阻塞2主要是程...

  • 非阻塞IO

    非阻塞io(NIO)包含两重含义:1、连接阻塞 -> 连接非阻塞 2、io阻塞 -> io非阻塞nio包下Ser...

  • BIO NIO AIO

    BIO:同步阻塞IONIO:同步非阻塞IOAIO:异步非阻塞IO先弄清楚同步、异步,阻塞、非阻塞概念。 io操作分...

  • 阻塞非阻塞 同步异步 IO模型及其应用 NIO实现原理

    1.同步异步概念 2.阻塞非阻塞概念 3.常见I/O模型:同步阻塞IO,同步非阻塞IO,异步阻塞IO,异步非阻塞I...

  • IO模型

    原文参考链接 四种状态 同步 异步 阻塞 非阻塞 IO分类 同步阻塞IO 同步非阻塞IO 异步非阻塞IO注意: 没...

  • NodeJS为什么支持高并发、非阻塞

    nodejs是非阻塞异步操作。 特点 1、Chrome V8引擎 2、事件驱动 3、非阻塞 I/O 4、单线程 如...

网友评论

      本文标题:nodejs 阻塞,非阻塞

      本文链接:https://www.haomeiwen.com/subject/nxqtzftx.html