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

非阻塞的优势

  -提高代码的响应效率

  -充分利用单核CPU的优势

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

node在事件执行时顺序

  -代码如下

  

  -代码功能

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

      

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

      

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

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

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

web中的单线程

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

  

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

  若是对代码进行修改

  

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

Node笔记五-进程、线程的更多相关文章

  1. C#线程学习笔记五:线程同步--事件构造

    本笔记摘抄自:https://www.cnblogs.com/zhili/archive/2012/07/23/Event_Constructor.html,记录一下学习过程以备后续查用. 前面讲的线 ...

  2. APUE 学习笔记(五) 进程环境

    1.main函数 C程序总是从main函数开始执行,当内核执行C程序时,在调用main函数之前先调用exec函数从内核获取命令行参数和环境变量值   2.进程终止 正常终止: (1)在main函数内执 ...

  3. Linux System Programming 学习笔记(五) 进程管理

    1. 进程是unix系统中两个最重要的基础抽象之一(另一个是文件) A process is a running program A thread is the unit of activity in ...

  4. 操作系统学习笔记----进程/线程模型----Coursera课程笔记

    操作系统学习笔记----进程/线程模型----Coursera课程笔记 进程/线程模型 0. 概述 0.1 进程模型 多道程序设计 进程的概念.进程控制块 进程状态及转换.进程队列 进程控制----进 ...

  5. Python 进程线程协程 GIL 闭包 与高阶函数(五)

    Python 进程线程协程 GIL 闭包 与高阶函数(五) 1 GIL线程全局锁 ​ 线程全局锁(Global Interpreter Lock),即Python为了保证线程安全而采取的独立线程运行的 ...

  6. Linux进程线程学习笔记:运行新程序

    Linux进程线程学习笔记:运行新程序                                         周银辉 在上一篇中我们说到,当启动一个新进程以后,新进程会复制父进程的大部份上下 ...

  7. java并发编程笔记(五)——线程安全策略

    java并发编程笔记(五)--线程安全策略 不可变得对象 不可变对象需要满足的条件 对象创建以后其状态就不能修改 对象所有的域都是final类型 对象是正确创建的(在对象创建期间,this引用没有逸出 ...

  8. 关于linux的一点好奇心(五):进程线程的创建

    一直以来,进程和线程的区别,这种问题一般会被面试官拿来考考面试者,可见这事就不太简单.简单说一点差异是,进程拥有独立的内存资源信息,而线程则共享父进程的资源信息.也就是说线程不拥有内存资源,所以对系统 ...

  9. python学习笔记-进程线程

    1.什么是进程(process)? 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述 ...

随机推荐

  1. Windows下配置nginx+FastCgi + Spawn-fcgi

    前提: 下载nginx, FastCgi, Spawn-fcgi Spawn-fcgi有个Windows的版本,但不能在VS中编译,这里有一个编译好的版本:http://download.csdn.n ...

  2. 关于会话、进程、请求的几个常用SQL

    1.检查自己的SID SELECT sid FROM v$session WHERE sid = (SELECT sid FROM v$mystat WHERE rownum = 1); 2. 几个I ...

  3. 【一天一道LeetCode】#49. Group Anagrams

    一天一道LeetCode系列 (一)题目 Given an array of strings, group anagrams together. For example, given: [" ...

  4. 在Windows下搭建Gitlab服务器

    一.GitLab简介 GitLab 是一个用于仓库管理系统的开源项目.使用Git作为代码管理工具,并在此基础上搭建起来的web服务. 可通过Web界面进行访问公开的或者私人项目.它拥有与Github类 ...

  5. Cocos2D场景中对象引用为nil时的判断

    如果该对象在SpriteBuilder中属性中设置了name,则检查是否 [self.scene getChildByName:@"theNameOfTheNode" recurs ...

  6. ITU-T Technical Paper: QoS 测量 (目标,方法,协议)

    本文翻译自ITU-T的Technical Paper:<How to increase QoS/QoE of IP-based platform(s) to regionally agreed ...

  7. 苹果新的编程语言 Swift 语言进阶(十四)--扩展

    扩展是为一个已经存在的类.结构.枚举类型添加新功能的一种方式,包括为不能存取源代码的那些已经存在的类型添加功能. 扩展类似于Objective-C语言中的类别,与类别不同的是Swift语言的扩展没有名 ...

  8. Aho-Corasick算法学习

    1.概述 Aho-Corasick自动机算法(简称AC自动机)1975年产生于贝尔实验室.该算法应用有限自动机巧妙地将字符比较转化为了状态转移.此算法有两个特点,一个是扫描文本时完全不需要回溯,另一个 ...

  9. java--加强之 Java5的线程并发库

    转载请申明出处:http://blog.csdn.net/xmxkf/article/details/9945499 01. 传统线程技术回顾 创建线程的两种传统方式: 1.在Thread子类覆盖的r ...

  10. LeetCode(45)-Bulls and Cows

    题目: You are playing the following Bulls and Cows game with your friend: You write down a number and ...