协同程序
协同程序在Kotlin 1.1引入,处于实验性阶段,更多细节见下文。
一些API初始化一些长时间运行的操作(网络I/O,文件I/O,CPU或GPU等),并且需要调用者阻塞直到调用完成。协同程序提供一种方式避免阻塞一个线程,并提供一种更代价更小的更可控的操作:协同程序暂停挂起。
协同程序将并发写进库来简化异步编程。程序的逻辑可以在协同程序中顺序地进行表达,库会帮我们解决异步问题。库会包装用户相关部分的代码,并使用回调,订阅相关实践、在不同的线程中计划执行(甚至是不同的机器),代码将保持最简单的方式就像其是顺序执行。
许多其他语言的异步机制可以在Kotlin协同程序库中使用。这些包括async/await、channels和select、generators/yield,详情请继续参考下面的内容。