1.进程
- 程序的一次执行, 它占有一片独有的内存空间。 例如,我们打开电脑上的chrome,它会占用一定的内存空间,QQ也会在占用一定的内存空间,它们所占用的内存空间是相互独立的,互相是不能够访问的。
- 可以通过windows任务管理器查看进程
2.线程
- 是进程内的一个独立执行单元
- 是程序执行的一个完整流程
- 是CPU的最小的调度单元
3.图解
- 当我们启动程序A(或者说软件A),那就会启动其相对应的进程,A对应3个进程,也就是说A是多进程的。
- 相对应的我们可以看到程序B(或者说软件B),对应的是单进程的
- 对于进程而言,对应不同的线程,可以有单线程和多线程。
4.相关知识
- 应用程序必须运行在某个进程的某个线程上
- 一个进程至少有一个运行的线程:主线程,进程启动后自动创建
- 一个进程中可以同时运行多个线程,这种情况我们会说程序是多线程运行的
- 一个进程内的数据可以供该进程中的多个线程直接共享
- 不同进程间的数据不能共享
- 线程池:保存多个线程对象的容器,实现线程对象的反复利用
5. 问题
通过上面的学习,相信你已经掌握的差不多了,那看看你能否回答出下面的问题。
- 何为多进程与多线程?
- 比较单线程与多线程。
- JS是单线程还是多线程?
- 浏览器运行是单线程还是多线程?
- 浏览器运行是单进程还是多进程?
答案
-
多进程运行:一个应用程序可以同时启动多个实例运行
多线程:一个进程内,同时有多个线程运行 -
多线程:
优点:有效的提高了CPU的效率,例如现在的多核处理器。
缺点:创建多线程开销,线程间切换开销(例如单核的多进程,会执行一段A进程再执行一段B 进程,如此反复切换),死锁和状态同步问题
单线程:
优点:顺序运行,简单易懂
缺点:效率低 -
js是单线程运行的,但是H5中的Web Worker可以多线程运行
-
浏览器是多线程的
-
浏览器有的是多进程的有的是单进程的。chrome和新版的IE都是多进程的。