标签:并发

共 8 篇文章带有这个标签。

Effect.tx 与 TxRef:用事务取代 STM 的共享状态

v4 里 STM 被 Effect.tx 加一组 Tx 数据结构取代。本文讲嵌套事务如何合并、txRetry 如何阻塞重试、怎样原子地改多个 TxRef,以及它和 Ref、Semaphore 的取舍,附实测踩坑。

共享状态:Ref、Queue、PubSub、Semaphore 怎么选

多个 fiber 要共享数据、互相传递工作或限制并发时,该用哪个原语?本章按「要解决的问题」而不是按 API 来分类:Ref 存值、Queue 派活、PubSub 广播、Semaphore 限流,并讲清各自的边界。

中断与资源安全:Scope、acquireRelease、finalizer

讲解为什么 try/finally 在异步与中断场景下不够用,以及 Effect 如何用 Scope、acquireRelease 与 finalizer 保证资源一定释放:获取与释放成对、后进先出、中断时同样生效。

并发组合子:all、forEach、race,并发度与失败传播

讲清 Effect.all、Effect.forEach、Effect.race 的语义:默认顺序执行、concurrency 选项如何限制并发度、一个任务失败时其余任务会怎样,以及如何收集全部结果而不是遇错即停。

Fiber 心智模型:结构化并发

用 async/await 的视角理解 fiber:它是什么、为什么子任务必须属于父任务,以及 forkChild、join、interrupt 各自表达的语义。讲清「中断不是失败」与结构化并发的价值。