协程进阶:通道 06. 扇出模式 (Fan-out)

本篇解析 example-channel-06.kt。学习如何将一个生产者的任务分发给多个消费者。

1. 核心概念:一发多收

扇出模式指:一个生产者向通道发送数据,多个消费者同时从同一个通道接收数据。

特点:

  • 负载均衡:多个消费者并发运行,每个消费者取走一部分数据。
  • 数据不重复:一个元素只能被其中一个消费者接收,绝不会被重复处理。

2. 代码解析

1
2
val producer = produceNumbers() // 生产者每 100ms 发一个数
repeat(5) { launchProcessor(it, producer) } // 启动 5 个并发消费者

3. 开发者感悟

在 Android 实际开发中,扇出模式常用于处理海量图片下载或并发网络请求。你只需要一个请求通道,后台启动 5-10 个协程作为消费者,就能极大地提高系统的整体吞吐量。

,