我的问题是理论上的。我对kotlin还是很陌生(仅通过了本教程,没有编写任何实际代码)。
通过阅读语言参考资料,我发现自己对“暂停”是一个关键字感到困惑,但是在关键字列表中找不到“启动”之类的东西。这使我认为存在一些不对称性-“挂起”是编译器功能,而“启动”是库功能。我的理解正确吗?如果是这样,将两者都实现为库功能还是同时将其实现为编译器功能会更好吗?
我一直认为您总是可以使用可用的语言功能来编写自己的标准库,但是我仍然看不到这是否真的适用于这种情况。
TL; DR:我可以使用纯Kotlin启动协程,而不导入任何库(无论多么丑陋)?
因为协程对于don't support launch的用例有效。因为suspend
需要一些specific support from the compiler,并且如果您已经有launch
,则suspend
不需要。因为结构化并发是语言功能之上的library framework,并且launch
是该特定框架的一部分,所以它会根据语言的需求做出特定的选择。
无需任何库即可启动协程,可以使用startCoroutine
完成。 startCoroutine
是Kotlin的一部分,而不是库。