MST

星途 面试题库

面试题:Rust函数在并发编程中如何通过通道(channel)实现数据传递

请描述在Rust并发编程里,使用`std::sync::mpsc`创建通道来在不同线程间传递数据的基本步骤,并给出一个简单示例代码,该示例要求主线程创建一个通道发送端,新建的线程持有接收端,主线程发送一个字符串到新线程并由新线程打印出来。
20.8万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
  1. 基本步骤
    • 创建通道:使用std::sync::mpsc::channel()函数创建一个通道,它返回一个元组,包含发送端(Sender)和接收端(Receiver)。
    • 线程间传递通道部分:将发送端或接收端传递到不同的线程中,这通常通过std::thread::spawn闭包捕获来实现。
    • 发送数据:在持有发送端的线程中,使用发送端的send方法发送数据。
    • 接收数据:在持有接收端的线程中,使用接收端的recv方法接收数据(该方法会阻塞直到有数据可用)。
  2. 示例代码
use std::sync::mpsc;
use std::thread;

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

    // 新建线程并传递接收端
    let handle = thread::spawn(move || {
        // 接收数据
        let received = rx.recv().unwrap();
        println!("Received: {}", received);
    });

    // 主线程发送数据
    tx.send("Hello from main thread").unwrap();

    // 等待线程结束
    handle.join().unwrap();
}