开源推荐
morning
GitHub 热门项目:rill
摘要
GitHub项目:rill 仓库地址:https://github.com/destel/rill Stars:1853 | 作者:destel 项目描述:Go toolkit for clean, composable, channel-based concurrency ================================================== README 内容: ...
and
rill
https
com
destel
the
github
Rill
for
channel
2026-09-09
1 阅读
约5分钟阅读
GitHub Trending
字号:
GitHub 项目:rill
仓库地址:https://github.com/destel/rill
星级:1853 | 作者:德斯特尔
项目描述:用于干净、可组合、基于通道的并发的 Go 工具包
===================================================
自述文件内容:
# Rill [](https://pkg.go.dev/github.com/destel/rill) [](https://goreportcard.com/report/github.com/destel/rill) [](https://codecov.io/gh/destel/rill) [](https://github.com/avelino/awesome-go)
Rill 是一个为 Go 带来可组合并发性的工具包,使得从简单、可重用的部分构建并发程序变得更加容易。
它减少了样板文件,同时保留了 Go 自然的基于通道的模型和背压行为。
````bash
去 get -u github.com/destel/rill
````
## 目标
- **让常见任务变得更容易。**
Rill 提供了一种更干净、更安全的方法来解决常见的并发问题,例如并行作业执行或
实时事件处理。
它消除了样板文件并抽象了 goroutine、通道和错误管理的复杂性。
同时,开发人员保留对所有操作的并发级别的完全控制。
- **使并发代码可组合且干净。**
库中的大多数函数都将 Go 通道作为输入,并返回新的、转换后的通道作为输出。
这使得它们能够以各种方式链接起来,从更简单的部件构建可重复使用的管道,
类似于 Unix 管道。
结果,并发程序变成了清晰的可重用操作序列。
- **集中错误处理。**
错误会通过管道自动传播,并可以在最后的单个位置进行处理。
对于更复杂的场景,Rill 还提供了在管道中任意点拦截和处理错误的工具。
- **简化流处理。**
借助 Go 通道,内置函数可以处理潜在的无限流,在项目到达时对其进行处理。
这使得 Rill 成为实时处理或处理内存无法容纳的大型数据集的便捷工具。
- **为高级任务提供解决方案。**
除了基本操作之外,该库还包括用于批处理、有序扇入、映射缩减、
流分割、合并等等。管道虽然通常是线性的,但可以具有任何无循环拓扑 (DAG)。
- **支持自定义扩展。**
由于 Rill 在标准 Go 通道上运行,因此可以轻松编写与该库兼容的自定义函数。
- **保持轻便。**
Rill 拥有小型、类型安全、基于通道的 API,并且零依赖性,使其可以直接集成到现有项目中。
在资源使用方面也是轻量级的,保证了内存分配和goroutines的数量
不随输入大小而增长。
## 快速入门
让我们看一个实际示例:从 API 获取用户、激活他们,然后保存更改。
它展示了如何控制每个步骤的并发性,同时保持代码整洁和可管理。
**ForEach** 返回第一个错误和上下文
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱