进程 线程

    进程

        运行的代码段+资源   进程和资源是1:1 每个进程都有自己的文件描述符

    线程

        进程中使用多线程就是让共享同一批资源的操作一起进行。 进程和线程是一个1:n

    上下文

        线程上下文是进程上下文的子集

    协程

        个线程内可以由多个这样的特殊函数在运行,但是有一点必须明确的是,一个线程的多个协程的运行是串行的。比如 yield

    并发和并行

        并发(分片)

        并行(多个cpu)

    Node 多进程

        child_process

            exec

                子进程执行的是非node程序,传入一串shell命令,执行后结果以回调的形式返回,与execFile\n不同的是exec可以直接执行一串shell命令

            execFile

                子进程执行的是非node程序,传入一串shell命令,执行后结果以回调的形式返回,与execFile\n不同的是exec可以直接执行一串shell命令。

            fork

                子进程执行的是node程序,提供一组参数后,执行的结果以流的形式返回,与spawn不同,fork生成的子进程只能执行node应用。

            spawn

                子进程中执行的是非node程序,提供一组参数后,执行的结果以流的形式返回

        多进程通信

            基于 socket,基于管道,基于 mmap 内存映射,主要讨论node :  文件描述符、管道。

            master 并不是直接把这些数据扔给 worker,而是在 80 端口接收到数据后,生成对应的 socket,再把该 socket 对应的文件描述符通过管道传给 worker,一个 socket 意味着服务端和客户端的一个数据通道,也就意味着 master 把跟客户端的数据通道传给了 worker。


参考

​https://naotu.baidu.com/file/12e9857617d241b914648906f2c11cb5​

​https://mp.weixin.qq.com/s/g3lhEgmTDtMKz7WfAQjIjA​

​https://github.com/forthealllight/blog/issues/24​