Skip to content

异步 ​

把代码块丢去并发执行,立即返回任务句柄。

xuantie
设 任务 = 异步 {
    时.睡(100)
    返 42
}
设 返值 = 等待(任务)

你可以…… ​

  • 后台跑耗时操作,主线程继续干别的——最后再用 等待 收尾:
xuantie
设 任务 = 异步 {
    示("任务执行中...")
    时.睡(1000)
}
示("主线程继续执行...")
等待(任务)
  • 并发发起一批任务,逐个等待汇总——每个地址一个独立块:
xuantie
设 们 = []
遍历 u 于 ["http://a.com/1", "http://a.com/2"] {
    设 地址 = u
    们.追加(异步 {
        设 r = 求(地址)
        若 r.成功 { 示(地址 & " 完成") }
    })
}
遍历 t 于 们 { 等待(t) }

注意 ​

  • 执行层由编译器按挂起点位置自动路由:等待/收/发/选/时.睡 只在语句级 → fiber(轻量);任一出现在循环体内 → 整块走线程池,运行期独占一个 worker 线程。
  • 块内捕获的外层局部变量是启动时刻的值副本:外层之后再改它看不到,块内改了也不写回。要共享请走通道或全局变量。
  • 循环里批量起任务必须逐迭代捕获(上面 设 地址 = u 那行):直接捕获循环变量,所有任务都会拿到循环结束后的终值。

相关 ​

等待 · 并行 · 道

基于 VitePress 静态构建 · 文档内容与仓库 GUIDE/ 同源

玄铁玄铁 XUANTIE · 中文系统级编程语言MARK 玄·折 120×120 · STROKE 8 · NO CURVES