进程与线程
进程:是资源分配的最小单位。程序由指令和数据组成,指令需要运行就要加载到 CPU,数据需要读写就要加载到内存,进程就是加载指令、管理内存、管理 IO 的。
线程:是最小调度单位。一个线程是一个指令流,将一个个指令以一定顺序交给 CPU 加载。
进程和线程的对比
进程基本相互独立。线程存在于进程中,是进程的子集。
进程有共享资源,供内部线程共享。线程共享进程内的内容,比如多个线程可以访问同一个共享变量。
进程间通信复杂:同一个计算机进程通信 IPC;不同计算机通信,通过网络并遵守共同的协议如 HTTP。线程通信简单,更轻量级,线程上下文切换比进程切换比底本低。
并发和并行
并发:单核 CPU 下,线程 CPU 串行执行,任务调度室将 CPU 时间片—最小 15 毫秒,切换非常快,肉眼察觉不到,“微观串行,宏观并行”,线程轮流使用 CPU。同一时间应对多件事情的能力。
并行:多核 CPU 下,每个核都可以调度运行线程。同一时间动手做多件事情的能力。
异步和同步
同步:需要等待结果返回,才能继续运行。
异步:不需要等待结果返回,就能继续运行。