小结一下近期所学。
进程、线程和协程
在理解协程之前,先要弄明白什么是进程和线程。
- 进程:应用程序启动的实例,拥有打开的文件资源、数据、地址空间,例如打开了一个软件就是启动了一个进程。
- 线程:是进程的一部分,程序的实际执行者。一个进程至少包括一个主线程。
对于操作系统来说,线程是最小的执行单元,进程是最小的资源管理单元。
那什么是协程呢?
- 协程:是一种比线程更加轻量级的存在,是一个特殊的函数。
一个进程可以拥有多个线程一样,一个线程可以拥有多个协程。但是,协程和进程、线程是属于不同的维度的。
多个进程或多个线程是可以并行运行的。
一个线程的多个协程的运行是串行的。
协程相对于进程、线程的优势:
-
协程执行效率极高。因为协程的切换时机是由程序自身控制,不是根据操作系统自己的切换策略,因此,没有和进程、线程类似的切换开销,不存在上下文切换。
-
不需要多线程的锁机制。因为只有一个线程,在协程中共享资源不需要加锁,只需要判断状态。
同步和异步
- 同步:就是调用某个东西,调用方得等待这个调用返回结果才能继续往后执行。
- 异步,和同步相反,调用方不会立即得到结果,而是在调用发出后,调用者可继续执行后续操作,不会像同步一样等待,被调用者通过状体来通知调用者,或者通过回掉函数来处理这个调用。
打比方:
同步:你去商城买东西,你看上了一款手机,能和店家说你一个这款手机,他就去仓库拿货,你得在店里等着,不能离开。
异步:现在你买手机直接去京东下单,下单完成后你就可以做其他事情,)等货到了去签收。