进程
进程负责为程序的运行提供必备的环境
进程就相当于工厂中的车间
当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。
而一个进程又是由多个线程所组成的。
线程
线程计算机中的最小的计算单位,线程负责执行进程中的程序
线程就相当于工厂中的工人
线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,
即不同的线程可以执行同样的函数。
单线程
js是单线程
单线程在程序执行时,所走的程序路径按照连续顺序排下来,前面的必须处理好,后面的才会执行。 单线程较多线程来说,系统稳定、扩展性极强、软件丰富。 多用于点对点的服务。 单线程处理的优点:同步应用程序的开发比较容易,但由于需要在上一个任务完成后才能开始新的任务,所以其效率通常比多线程应用程序低。
多线程
多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务, 也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。
多线程的好处: 可以提高CPU的利用率。
1、多线程间并行,是一个进程中的多个执行流,可理解为将一个大任务拆分出的多个子任务。
2、多线程适用场景
1)存在需要等待IO、网络或其他外部资源的任务。当前等待其他资源却依旧占用CPU的线程可让出CPU,让其他线程执行,大大提高了程序效率,充分利用了CPU资源。
2)存在长时间占用CPU的任务。CPU以时间片为单位分配给各个线程,一个周期内各个线程都可以得到执行,而非卡在一个线程。而且多线程意味着分配到的CPU时间片也更多。
3、多线程弊端
1)访问共享资源时要小心,需要更多的锁资源,同步更加复杂。
2)内存占用更多,资源开销更大。
3)需要额外的线程调度和管理。如需要CPU时间来跟踪线程。