mpsc 是 multiple producer, single consumer 的缩写,表示多个发送端、一个接收端。它是一种常见的消息通信模型:多个地方可以把消息发送到同一个 channel 中,再由一个接收方按顺序取出并处理。
前言
写服务端时,很多模块都可能需要给同一个客户端发消息。比如登录回包、消息广播、系统通知,甚至定时任务产生的推送。如果这些模块都直接操作连接对象,代码很容易碰到借用和并发访问的问题,连接本身也会变得难以维护。
一种更自然的做法是,让连接只由一个地方持有,其他模块只负责投递消息,再由持有连接的任务统一写出。mpsc 适合解决的,正是这类“多处发送、单点处理”的通信问题。
标准库的 mpsc
先看一个简单的例子:
1 | use std::sync::mpsc; |