如果协程仍然使用线程并行运行代码,为什么它被认为是轻量级的?
在我的理解 kotlin 的suspend功能被编译器转换成状态机,其中每个分支可以在开发人员定义的相同或不同线程上运行。协程构建器,例如,launch{}负责它并CoroutineContext定义要运行的线程。
通过将代码块发送到利用相同线程的线程池来实现并行性
有一个关于 100k 协程和 100k 线程的基准测试,其中协程毫无问题地通过并且线程抛出异常(可能是 OutOfMemory)。这让我想到我在这里遗漏了一些东西。
你能帮我理解这里遗漏了什么,是什么让协程并行运行代码块 100k 而不像线程那样超过内存限制?