Lobsters | 📄 原文链接 | 2026-10-22 收录

ConcurrentML:把通信操作变成值,顺手修掉 Go 的 goroutine 泄漏

来源:nikhilism.com — 2026-10-16

📋 概述

Go 把 CSP 带进主流,但它的通信操作是语句、执行到就生效,select 只能在一组现成操作之间挑一个。ConcurrentML 的核心想法是把通信操作提升为一等值:事件可以先构造、再组合、延迟执行。于是选择与取消统一成同一套抽象,并发逻辑可以封装与组合,这在 Go 里做不到。更实用的一点是阻塞线程能被 GC 回收,不必像 Go 那样处处担心 goroutine 泄漏——Go 1.27 才刚加上泄漏检测器。文章全部用 Racket 演示,因为 Racket 是今天把这套模型支持得最完整的语言。

🔑 核心要点

💡 金句

In CML, however, these blocked threads are not a problem because they will be automatically garbage collected.
← 返回 Lobsters 首页