其他分享
首页 > 其他分享> > 协程 的 主要作用 是 让 单核 GC 变成 单线程 GC

协程 的 主要作用 是 让 单核 GC 变成 单线程 GC

作者:互联网

协程 的 主要作用 是 让 单核 GC 变成 单线程 GC,     这样, 在 单核 范围 内,  GC 要 工作 时,  不需要 挂起 线程,   只需要 挂起 协程,

 

挂起 n 个 协程 比 挂起  n 个 线程 的 开销 低 很多,   最起码,   挂起 线程 需要跟 操作系统 通信,    而 挂起 协程 纯粹 是 一个 线程 内 的 一些 代码 执行  。

 

另外,   因为 n 个 协程 都 只是 一个 线程 内 的 代码 执行,   因此,   可以 对 这些 代码 进行 各种 优化, 就像 优化 普通 的 代码,  一些 函数调用,  包括 内联 和 寄存器优化,   且 可以 减少内存屏障 的 使用次数  。

 

但 想了一下,   协程 不能 减少 内存屏障 的 使用次数,

 

要 深化 内联 和 寄存器优化 的 程度,  减少 内存屏障 使用次数,  应该是 把 多个任务编译 成 由 一个 状态机 来执行,   比如  .Net / C#   async await,    但 其实 这个技术 很勉强  。

 

标签:协程,单核,单线程,代码,线程,内存,GC
来源: https://www.cnblogs.com/KSongKing/p/16181359.html