协程是可以暂停并恢复执行的程序单元,通常由语言运行时或库调度,用于组织多个任务的执行。
与线程的关系
协程可以运行在线程之上,调度方式取决于运行时:Python asyncio Task 通常在一个事件循环线程中协作推进;Go goroutine 可由运行时调度到多个操作系统线程。不能把所有协程都理解成单线程,也不能把协程数量等同于可用 CPU 核数。
等待与阻塞
协程在可等待操作处让出执行机会,可减少等待期间占用执行线程。直接进行同步阻塞或长时间计算仍可能影响其他任务。取消、异常和资源清理需要有明确的生命周期;创建任务后不等待结果或不设计退出条件,可能留下持续占用资源的工作。