主要在于 线程切换需要借助内核完成,意味着 用户态 --> 内核态 --> 用户态, 而协程切换 只在用户态就可以完成, 用户态 --> 用户态
用户态和内核态的切换 是一部分的开销
切换频率,线程切换频率比协程切换的频率高很多, 因为协程库大多都在 IO 阻塞才切换
还有
协程是串行的,线程是并行的,协程是自主让渡执行时间,而且都跑在一个核心上,不需要复杂的调度算法,不需要优先级管理,而线程,其自身不让渡核心时间,还有优先级。 操作系统需要像指挥交通那样指挥,所以耗时。