MST
星途 面试题库

面试题:Rust中通道通信模型的基础应用

请描述Rust中`std::sync::mpsc`模块下通道创建的基本步骤,并编写一段简单代码示例,实现一个线程向另一个线程发送一个字符串消息并接收回复。
24.8万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
  1. 通道创建基本步骤

    • 使用mpsc::channel()函数创建通道,该函数返回一个元组,包含发送端(Sender)和接收端(Receiver)。
    • 可以将发送端传递给需要发送数据的线程,接收端传递给需要接收数据的线程。
    • 发送端使用send方法发送数据,接收端使用recv方法接收数据。
  2. 代码示例

use std::sync::mpsc;
use std::thread;

fn main() {
    // 创建通道
    let (tx, rx) = mpsc::channel();

    // 克隆发送端,因为我们需要在新线程中使用它
    let tx_clone = tx.clone();

    let handle = thread::spawn(move || {
        // 发送字符串消息
        tx_clone.send("Hello from sender".to_string()).unwrap();

        // 接收回复
        let response = rx.recv().unwrap();
        println!("Sender received: {}", response);
    });

    // 主线程接收消息
    let received = rx.recv().unwrap();
    println!("Receiver received: {}", received);

    // 主线程发送回复
    tx.send("Hello back from receiver".to_string()).unwrap();

    handle.join().unwrap();
}