1. 什么是協(xié)程
協(xié)程是協(xié)同程序(Coroutine)的簡稱(co前綴表示合作,routine即為程序)。具體來說就是程序A在執(zhí)行時可能會轉(zhuǎn)為執(zhí)行程序B,甚至是其他,而每個程序之間并沒有相互調(diào)用。
2. 與一般子程序的區(qū)別
線程的執(zhí)行,實質(zhì)是一個方法/函數(shù)從入棧(方法調(diào)用)到出棧(返回值)的過程,順序十分明確。
協(xié)程也是由單一線程執(zhí)行,如第一點所說,由于并沒有相互調(diào)用關系,因此理解起來更困難(通過CPU中斷切換協(xié)程的上下文)。
3. 與多線程相比的優(yōu)勢
協(xié)程之間并沒有方法調(diào)用關系,有點像多線程。而與多線程比起來,協(xié)程具備的優(yōu)勢:
- 更高的執(zhí)行效率(線程的來回切換需要消耗資源,所需線程越多,協(xié)程的優(yōu)勢越大)
- 不需要多線程對共享資源的鎖機制
4. 合理使用
多進程+協(xié)程