• Node笔记五-进程、线程


    进程
      -每一个正在运行的应用程序都称之为进程
      -每一个应用程序都至少有一个进程
      -进程是用来给应用程序提供一个运行的环境
      -进程是操作系统为应用程序分配资源的一个单位
    线程
      -用来执行应用程序中的代码
      -在一个进程内部,可以有很多的线程
      -在一个线程内部,同时只能干一件事情
      -传统的开发方式大部分都是I/O阻塞的,需要多线程来个更好的利用硬件资源
      -容易造成错觉>线程越多越好
    多线程没落原因
      -线程之间共享某些数据,同步某个状态都很麻烦
      -创建线程耗费大量的资源和时间
      -线程数量有限
      -CPU只有一个(单核),因此多线程都是假的
      -CPU在不同线程之间转换,有个上下文转换,这个转换非常消耗时间

    非阻塞的优势

      -提高代码的响应效率

      -充分利用单核CPU的优势

      -改善I/O的不可预测带来的问题

    node在事件执行时顺序

      -代码如下

      

      -代码功能

        --查询文件是否存在,若是文件不存在,则直接创建文件

           

        --查询文件是否存在,若是文件存在,则先删除文件,再创建文件

          

       -根据代码以及运行结果可以看出,代码执行时间很短,当遇到fs.stat之类的函数时,会将函数放置队列中等待执行。

      -Node中将所有的阻塞操作交给了内部实现的线程池

      -Node本身主线程主要就是不断的往返调度

     web中的单线程

      -node和php等语言存在一定的区别,node在web中是单线程执行的

      

      执行上面的代码,每一个请求服务器,都会刷新count,

      若是对代码进行修改

      

      此时当请求页面次数count==8时,node就会进入死循环,使页面一直处于刷新状态,其他页面访问此端口也是如此。

  • 相关阅读:
    区块链技术术语表
    以太坊客户端Geth命令用法-参数详解
    智能合约开发环境搭建及Hello World合约
    以太坊是什么
    比特币区块结构Merkle树及简单支付验证分析
    非对称加密技术- RSA算法数学原理分析
    验证APNS证书的有效性
    十八般武艺之 Runloop
    iOS 所有设备一览 && CoreFoundation源码
    [User Defaults] Failed to read values in CFPrefsPlistSource (iOS 10)
  • 原文地址:https://www.cnblogs.com/nordon-wang/p/6047098.html
Copyright © 2020-2023  润新知