计算机程序只是存储在磁盘上的可执行二进制(或其他类型)文件。只有把它们加载到内存中并操作系统调用,才有用生命期。
-
进程是一个执行中的程序。每个进程都拥有自己的地址空间、内存、数据栈以及其他用于跟踪执行的辅助数据。进程可以通过派生(fork或spawn)新的进程来执行其他任务,不过因为每个新进程都拥有自己的内存和数据栈等,所以只能采用进程间通信(IPC)的方式共享信息。
-
线程与进程类似,但它们在统一进程下执行,并共享相同的上下文。线程包括开始、执行顺序和结束三部分。当其他线性运行时,它可以被抢占(中断)和临时挂起(睡眠)——这种做法叫做让步(yielding)。
-
单线程+异步I/O的编程模型称为协程,有了协程的支持,就可以基于事件驱动编写高效的多任务程序。协程最大的优势就是极高的执行效率。协程的第二个优势就是不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不用加锁,只需要判断状态。