SuperAPI AI 工具集

crystal-concurrency

通用与其它

查看项目

更新于 10-16 03:38

技能介绍

用途:在 Crystal 中实现并发与非阻塞程序,覆盖 I/O 并发、实时数据管道、工作池、生产者-消费者、限流与背压等场景。

主要能力:

  1. Fiber(绿色线程)用 spawn 创建,支持传参与命名(spawn(name: "worker")),协程式调度;Fiber 不直接返回值,需通过 Channel 回传结果。
  2. Channel 作为 Fiber 间通信原语,支持无缓冲与带缓冲(Channel(Int32).new(capacity: 3))、each 迭代、close 关闭、closed? 检查与处理 Channel::ClosedError。
  3. select 可同时等待多个 channel,支持 timeout(1.second) 超时分支与 else 非阻塞默认分支,并可在循环中收集多 worker 结果。
  4. 工作池:固定数量 worker 通过 Channel 分发任务与回收结果,可结合异常处理返回成功/失败结果。
  5. 并行 map/reduce:按 worker 数分块执行并有序回填结果,或分块归约后合并。
  6. 共享状态:Mutex#synchronize 保护临界区,Atomic(Int32) 提供 add/sub/get/compare_and_set,适合计数器与标志位。

使用方式:以代码示例为主,需先引入相应库(如 require "mutex"、require "atomic"),通过 spawn、Channel、select、Mutex、Atomic 组合实现。

限制与注意:Fiber 执行顺序不确定;异常不会传播到 spawn 处,需显式处理;阻塞或 CPU 密集操作会拖慢调度;须关闭 channel、避免死锁、控制 Fiber 数量并设置合理缓冲与超时。具体版本与平台支持资料未提供,暂未提及。