进程:进程就是应用程序的启动实例,比如我们打开一个游戏、运行一个软件,就是开启了一个进程。进程拥有代码和打开的文件资源、数据资源、独立的内存空间。
线程:线程从属于进程,是程序的实际执行者。一个进程至少包含一个线程,也可以拥有更多的线程,线程拥有自己的栈空间。
协程:协程的出现是为了解决进程和线程存在的问题的。使用多进程和多线程往往效率往往都不高(多线程比多进程效率高),因为在同步时会不可避免地存在以下操作:
- 加锁
- 进程、线程状态地切换
- 进程、线程上下文地切换
这些都是比较消耗性能地操作,此时就出现了协程地概念。协程是一种比线程更加轻量级地存在,正如一个进程可以拥有多个线程,一个线程也可以拥有多个协程。