用途:在 Effect 中安全地并行化相互独立的任务,并对并发度、后台任务生命周期与延迟加以协调。
主要能力:并行模式方面,可用 Effect.all(tasks, { concurrency: 10 }) 并发执行一组任务,用 Effect.forEach(items, processItem, { concurrency: 5 }) 以受限并发处理集合。Fiber 生命周期方面,可用 Effect.fork(work) 启动 Fiber,用 Fiber.join(fiber) 获取结果,用 Fiber.interrupt(fiber) 中断。竞速与超时方面,可用 Effect.race(slow, fast) 取先完成者,用 Effect.timeout(operation, "5 seconds") 为操作加超时。
使用建议:为保护资源应限制并发度;后台循环使用 fork,并始终管理中断;独立操作优先用 Effect.all;任务池用带 concurrency 的 Effect.forEach;可与重试和超时组合,实现有韧性的并行。
限制与注意:无界并发可能耗尽 CPU/IO 或触发速率限制;关闭时必须中断后台 Fiber;不要在 Fiber 内部阻塞,应保持异步/effectful。跨链主题包括错误与重试(针对瞬时失败的退避与抖动)、流与管道(在流上并发 map)。
本地源参考:实现前应搜索本地 Effect 源码 docs/effect-source/。关键文件为 Effect:docs/effect-source/effect/src/Effect.ts;Fiber:docs/effect-source/effect/src/Fiber.ts;Duration:docs/effect-source/effect/src/Duration.ts。示例搜索命令:grep -F "Effect.all" docs/effect-source/effect/src/Effect.ts;grep -rF "forEach" docs/effect-source/effect/src/ | grep -F "concurrency";grep -F "export" docs/effect-source/effect/src/Fiber.ts | grep -E "fork|join|interrupt";grep -F "race" docs/effect-source/effect/src/Effect.ts;grep -F "timeout" docs/effect-source/effect/src/Effect.ts。工作流:确定所需并发 API,在 Effect.ts 中搜索实现,研究类型与并发选项,查看测试文件用法,再基于真实实现编写代码。原则是真实源码优于文档优于假设。