1.进程(process): 程序的一次执行,它占有独有的一片内存空间,可以通过windows任务管理器查看进程
2.线程(thread): 进程内的一个独立执行单元,是程序执行的一个完整流程,也是CPU最小的调度单元
程序
3.程序执行,分为单进程程序和多进程程序,执行完一个程序可能是单个线程,也可能是多个线程
4.*应用程序必须运行在某一个进程的某个线程上;
*一个进程中至少有一个运行的线程:主线程,进程启动后自动创建;
*一个进程中可以同时运行多个线程,那么这个是多线程程序;
*一个进程内的数据可以供其中的多个线程直接共享
*多个进程之间的数据是不能互相直接共享的
5.线程池(thread poo): 保存多个线程对象的容器,实现线程对象的反复利用
6.多线程优点:能有效提升CPU的利用率
缺点: *创建多线程开销
*线程间切换开销
*死锁与状态同步问题
7.单线程优点:顺序编程简单易懂 , 缺点:效率低
8.JS是单线程的,但使用H5中的Web Workers可以多线程运行
9.浏览器运行是单线程还是多线程?
*浏览器运行都是多线程运行的
10.浏览器运行是单进程还是多进程?
*有的是单进程,有的是多进程(Chrome,新版IE是多线程的)
11.浏览器内核有许多模块组成:
主线程:
*JS引擎模块:负责JS程序的编译与运行
*html,css文档解析模块: 负责页面文本的解析
*DOM/CSS模块:负责dom/css在内存中的相关处理
*布局和渲染模块:负责页面的布局和效果的绘制(内存中的对象)
。。。。。。。
分线程:
*定时器模块: 负责定时器的管理
*事件响应模块:负责事件的管理
*网络请求模块:负责ajax请求
12.定时器是定时执行的吗?
*定时器并不能保证真正定时执行
*一般会延迟一丁点,也有可能延迟很长时间
定时器回调函数不是在分线程执行的,是在主线程执行的,js是单线程的
13.定时器是如何实现的?
*事件循环模型