zoukankan      html  css  js  c++  java
  • Node笔记五-进程、线程

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

    非阻塞的优势

      -提高代码的响应效率

      -充分利用单核CPU的优势

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

    node在事件执行时顺序

      -代码如下

      

      -代码功能

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

           

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

          

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

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

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

     web中的单线程

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

      

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

      若是对代码进行修改

      

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

  • 相关阅读:
    Redis中统计各种数据大小的方法
    Redis配置文件详解
    Redis服务器的启动过程分析
    在Mac OS上安装Vagrant和Docker的教程
    使用Redis实现用户积分排行榜的教程
    Redis教程(一):Redis简介
    Redis教程(二):String数据类型
    Redis教程(四):Hashes数据类型
    Redis教程(六):Sorted-Sets数据类型
    Redis教程(八):事务详解
  • 原文地址:https://www.cnblogs.com/nordon-wang/p/6047098.html
Copyright © 2011-2022 走看看