没有内联汇编,go、java等语言如何实现协程

我看了 Python 的协程库 greenlet 的实现,是通过 c+内联汇编修改寄存器实现的无感知的函数帧栈的切换。

gojavarust 等等高级语言是如何实现的?难道有不用汇编直接操作寄存器吗?


更新问题:没有内联汇编,go、java等语言如何实现有栈协程

阅读 1.6k
2 个回答

关于 Rust 如何实现协程,得益于 Rust 强大的类型机制,通过在编译时对 async/await 进行语法上的展开,生成匿名的 Future,并且把这些实现了 Future 类型的通过第三方的执行器调度。

go本身就支持, java的话, 可以看一下 kotlin 的协程实现, 把kotlin的类文件反编译了看java实现.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题