操作系统
进程与线程区别?JS 单线程带来的好处?
JS
是单线程执行的,但是你是否疑惑过什么是线程?
- 讲到线程,那么肯定也得说一下进程。本质上来说,两个名词都是
CPU
工作时间片的一个描述。 - 进程描述了
CPU
在运行指令及加载和保存上下文所需的时间,放在应用上来说就代表了一个程序。线程是进程中的更小单位,描述了执行一段指令所需的时间
把这些概念拿到浏览器中来说,当你打开一个
Tab
页时,其实就是创建了一个进程,一个进程中可以有多个线程,比如渲染线程、JS
引擎线程、HTTP
请求线程等等。当你发起一个请求时,其实就是创建了一个线程,当请求结束后,该线程可能就会被销毁
说到 JS
引擎线程和渲染线程,大家应该都知道,在 JS
运行的时候可能会阻止 UI
渲染,这说明了两个线程是互斥的。这其中的原因是因为 JS 可以修改 DOM
,如果在 JS
执行的时候 UI
线程还在工作,就可能导致不能安全的渲染 UI
。这其实也是一个单线程的好处,得益于 JS
是单线程运行的,可以达到节省内存,节约上下文切换时间,没有锁的问题的好处
并行和并发的区别?
并发是两个队列交替使用一台咖啡机,并行是两个队列使用两台咖啡机,如果串行,一个队列使用一台咖啡机,那么哪怕前面那个人便秘了去厕所呆半天,后面的人也只能死等着他回来才能去接咖啡,这效率无疑是最低的。
并发和并行都可以是很多个线程,就看这些线程能不能同时被(多个)cpu执行,如果可以就说明是并行,而并发是多个线程被(一个)cpu 轮流切换着执行。
进程间通讯有什么办法?
← 初探 Node.js 中的事件循环 算法 →