python 协程

https://docs.python.org/zh-cn/3/library/asyncio-task.html#introspection

kotlin 协程 kotlin

book: link: https://juejin.cn/post/6908271959381901325

fun main() {
    GlobalScope.launch(context = Dispatchers.IO) {
        delay(1000)
        log("launch")
    }
    // 主动休眠两秒,防止 JVM 过快退出
    Thread.sleep(2000)
    log("end")
}
 
private fun log(msg: Any?) = println("[${Thread.currentThread().name}] $msg")
Code Snippet 1: 示例

和 kotlin 协程相关的 4 个概念:

  1. suspend function, 即挂起函数,delay() 就是协程库提供的一个用于实现非阻塞式延时的挂起函数
  2. CoroutineScope, 即协程作用域,GlobalScope 是 CoroutineScope 的一个实现类,用于指定协程的作用范围,可用于管理多个协程的生命周期,所有协程都需要通过 CoroutineScope 来启动
  3. CoroutineContext, 即协程上下文,包含多种类型的配置参数。Dispatchers.IO 就是 CoroutineContext 这个抽象概念的一种实现,用于指定协程的运行载体,即用于指定协程要运行在哪类线程上
  4. CoroutineBuilder, 即协程构建器,协程在 CoroutineScope 的上下文中通过 launch、async 等协程构建器来进行声明并启动。 launch 、async 均被声明为 CoroutineScope 的扩展方法