Effect fork 家族:forkChild、forkDetach、forkScoped、forkIn 与 startImmediately
v4 的 fork 系列把子 fiber 挂在哪里、何时被中断,以及 startImmediately 与 uninterruptible 选项。用 PubSub 订阅丢消息复现 fork 后下一个 tick 才执行的竞态,并给出解法。
共 8 篇文章带有这个标签。
v4 的 fork 系列把子 fiber 挂在哪里、何时被中断,以及 startImmediately 与 uninterruptible 选项。用 PubSub 订阅丢消息复现 fork 后下一个 tick 才执行的竞态,并给出解法。
讲清 RateLimiter 的两种算法、delay 与 fail、内存与 Redis store,对比 Semaphore 和 Schedule,并介绍 PartitionedSemaphore 与 Latch 的用法。
v4 里 STM 被 Effect.tx 加一组 Tx 数据结构取代。本文讲嵌套事务如何合并、txRetry 如何阻塞重试、怎样原子地改多个 TxRef,以及它和 Ref、Semaphore 的取舍,附实测踩坑。
多个 fiber 要共享数据、互相传递工作或限制并发时,该用哪个原语?本章按「要解决的问题」而不是按 API 来分类:Ref 存值、Queue 派活、PubSub 广播、Semaphore 限流,并讲清各自的边界。
讲解为什么 try/finally 在异步与中断场景下不够用,以及 Effect 如何用 Scope、acquireRelease 与 finalizer 保证资源一定释放:获取与释放成对、后进先出、中断时同样生效。
讲清 Effect.all、Effect.forEach、Effect.race 的语义:默认顺序执行、concurrency 选项如何限制并发度、一个任务失败时其余任务会怎样,以及如何收集全部结果而不是遇错即停。
用 async/await 的视角理解 fiber:它是什么、为什么子任务必须属于父任务,以及 forkChild、join、interrupt 各自表达的语义。讲清「中断不是失败」与结构化并发的价值。
从 Fiber 和 Effect.all/forEach 的并发选项讲到 Scope、acquireRelease,再到中断如何保证清理一定执行。所有代码在 Effect v4 下通过 strict 编译,并标出与 v3 的命名差异。