
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习达内互联网IT培训的不同技术课程,而本文我们就简单来了解一下,Node.js中的进程和线程。
一、进程和线程
1.1、专业性文字定义
进程(Process),进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础,进程是线程的容器。
线程(Thread),线程是操作系统能够进行运算调度的小单位,被包含在进程之中,是进程中的实际运作单位。
1.2、通俗理解
以上描述比较硬,看完可能也没看懂,还不利于理解记忆。那么我们举个简单的例子:
假设你是某个快递站点的一名小哥,起初这个站点负责的区域住户不多,收取件都是你一个人。给张三家送完件,再去李四家取件,事情得一件件做,这叫单线程,所有的工作都得按顺序执行。
后来这个区域住户多了,站点给这个区域分配了多个小哥,还有个小组长,你们可以为更多的住户服务了,这叫多线程,小组长是主线程,每个小哥都是一个线程。
快递站点使用的小推车等工具,是站点提供的,小哥们都可以使用,并不仅供某一个人,这叫多线程资源共享。
站点小推车目前只有一个,大家都需要使用,这叫冲突。解决的方法有很多,排队等待或者等其他小哥用完后的通知,这叫线程同步。
总公司有很多站点,各个站点的运营模式几乎一模一样,这叫多进程。总公司叫主进程,各个站点叫子进程。
总公司和站点之间,以及各个站点互相之间,小推车都是相互独立的,不能混用,这叫进程间不共享资源。各站点间可以通过电话等方式联系,这叫管道。各站点间还有其他协同手段,便于完成更大的计算任务,这叫进程间同步。
还可以看看阮一峰的进程与线程的一个简单解释。
二、Node.js中的进程和线程
Node.js是单线程服务,事件驱动和非阻塞I/O模型的语言特性,使得Node.js高效和轻量。优势在于免去了频繁切换线程和资源冲突;擅长I/O密集型操作(底层模块libuv通过多线程调用操作系统提供的异步I/O能力进行多任务的执行),但是对于服务端的Node.js,可能每秒有上百个请求需要处理,当面对CPU密集型请求时,因为是单线程模式,难免会造成阻塞。
2.2、master-worker
master-worker模式是一种并行模式,核心思想是:系统有两个及以上的进程或线程协同工作时,master负责接收和分配并整合任务,worker负责处理任务。
2.3、多线程
线程是CPU调度的一个基本单位,只能同时执行一个线程的任务,同一个线程也只能被一个CPU调用。如果使用的是多核CPU,那么将无法充分利用CPU的性能。
多线程带给我们灵活的编程方式,但是需要学习更多的Api知识,在编写更多代码的同时也存在着更多的风险,线程的切换和锁也会增加系统资源的开销。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。