异步
把代码块丢去并发执行,立即返回任务句柄。
xuantie
设 任务 = 异步 {
时.睡(100)
返 42
}
设 返值 = 等待(任务)你可以……
- 后台跑耗时操作,主线程继续干别的——最后再用
等待收尾:
xuantie
设 任务 = 异步 {
示("任务执行中...")
时.睡(1000)
}
示("主线程继续执行...")
等待(任务)- 并发发起一批任务,逐个等待汇总——每个地址一个独立块:
xuantie
设 们 = []
遍历 u 于 ["http://a.com/1", "http://a.com/2"] {
设 地址 = u
们.追加(异步 {
设 r = 求(地址)
若 r.成功 { 示(地址 & " 完成") }
})
}
遍历 t 于 们 { 等待(t) }注意
- 执行层由编译器按挂起点位置自动路由:
等待/收/发/选/时.睡只在语句级 → fiber(轻量);任一出现在循环体内 → 整块走线程池,运行期独占一个 worker 线程。 - 块内捕获的外层局部变量是启动时刻的值副本:外层之后再改它看不到,块内改了也不写回。要共享请走通道或全局变量。
- 循环里批量起任务必须逐迭代捕获(上面
设 地址 = u那行):直接捕获循环变量,所有任务都会拿到循环结束后的终值。