Files
goLearn/note.md
2025-08-15 03:54:36 +08:00

1.6 KiB
Raw Permalink Blame History

实现一个生产者-消费者模型,要求:

2 个生产者协程,每秒生成 1 个随机数0-100发送到 channel 3 个消费者协程,从 channel 读取并打印数据; 主协程在 5 秒后关闭 channel 并退出程序。

题目:增强版生产者-消费者模型(含 sync.Mutex和 sync.RWMutex应用 ​​基础要求​​ ​​生产者​​: 2 个协程,每秒生成 1 个随机数0-100发送到缓冲通道容量为 10。 使用 sync.Mutex保护以下操作 记录每个数字的生成次数map[int]int 统计总生产数量int ​​消费者​​: 3 个协程从通道读取数据并打印格式消费者ID: 处理数据X (历史出现次数: Y)。 使用 sync.RWMutex保护对 map[int]int的读取查询历史次数写操作仍由 sync.Mutex保护。 ​​主协程​​: 5 秒后关闭通道,等待所有协程退出。 程序退出前,打印最终统计数据: 总生产/消费次数 每个数字的出现频率(按频率降序排列) ​​进阶要求​​ ​​性能优化​​: 消费者读取历史次数时,必须使用 RLock()允许多个消费者并发查询。 生产者更新 map和计数器时用最短的锁持有时间例如合并写锁操作。 ​​异常处理​​: 若通道已满,生产者需打印警告并丢弃数据。 消费者检测到通道关闭后立即退出,打印退出日志。 ​​扩展功能​​(可选): 添加一个监控协程,每秒打印当前最频繁生成的 3 个数字(需使用 RWMutex读取数据