rustp-31.多线程通道传递消息
通过通道在rust传递消息
- Rust实现消息传递并发的主要工具是通道。通道由两部分组成,一部分是发送端,一部
分是接收端,发送端用来发送消息,接收端用来接受消息。通过通道可以传递参数而不用过多考虑生命周期 ,发送端或者接收端任何一个被丢
弃就可以认为通道被关闭 - 通道的介绍:
(1). 通过mpsc::channel,创建通道,mpsc是多个生产者,单个消费者
(2). 通过spmc::channel,创建通道,spmc是一个生产者,多个消费者
(3). 创建通道后返回的是发送者和消费者,如:
1 | let (tx,rx) = mpsc::channel(); |
- 关于通道:
(1). 发送者的send方法返回一个Result<T,E>,如果接收端已经被丢弃,将没有发送值的目标
,此时发送会返回错误
(2). 接受者的recv返回值也是一个Result类型,当通道发送端关闭时,返回一个错误值
(3). 接收端的recv方法会阻塞到有一个消息到来,我们也可以使用try_recv(),不会阻塞,会
立即返回
1 | use std::thread; |
通道的例子
1 | use std::thread; |
发送多个值的例子
1 | use std::thread; |
多个生产者
1 | use std::thread; |
Comment