Skip to content

选 ​

等多个通道里第一个就绪的,返回其下标。

xuantie
设 fast = 道(1)
设 slow = 道(1)
设 idx = 选([fast, slow], 5000)

你可以…… ​

  • 按下标分派——配 匹配 判断是哪个通道就绪,超时走 _:
xuantie
设 idx = 选([data, ctrl], 1000)
匹配 idx {
    0 -> { 示("数据通道就绪") }
    1 -> { 示("控制通道就绪") }
    _ -> { 示("超时") }
}
  • 给单通道等待加超时——超时返回 -1:
xuantie
设 idx = 选([ch], 1000)
若 idx >= 0 {
    示("收到: " & ch.收())
} 否 {
    示("超时,重试...")
}
  • 非阻塞试探——超时给 0,立即返回:有货返下标,没货返 -1:
xuantie
设 idx = 选([通道], 0)

注意 ​

  • 选 只告诉你「哪个通道就绪」,不替你取数据——拿到下标后自己 收。
  • 返回可能晚于你给的超时毫秒:主线程等待期间会顺带驱动 fiber 调度器,若 fiber 里有长睡眠,等待会持续到它跑完一轮;超时到期仍未就绪才返回 -1。
  • 选 是挂起点:出现在循环体内会让整个 异步 块走线程池(路由规则同 等待)。

相关 ​

道 · 异步 · 等待

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

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