MST

星途 面试题库

面试题:Rust 中如何基于通信顺序进程(CSP)模式实现简单的线程间数据传递

在 Rust 中,假设你有两个线程,一个线程生成一系列数字,另一个线程接收这些数字并打印。请使用 Rust 的通信顺序进程(CSP)相关概念(如通道)实现这一功能。阐述你的实现思路,并给出关键代码片段。
18.6万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 使用 std::sync::mpsc 创建一个通道,用于线程间通信。mpsc 代表多生产者单消费者。
  2. 生成数字的线程将数字发送到通道中。
  3. 接收数字的线程从通道中接收数字并打印。

关键代码片段

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

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

    // 生成数字的线程
    let sender = thread::spawn(move || {
        for i in 0..10 {
            tx.send(i).unwrap();
        }
    });

    // 接收数字并打印的线程
    let receiver = thread::spawn(move || {
        for num in rx {
            println!("Received: {}", num);
        }
    });

    sender.join().unwrap();
    receiver.join().unwrap();
}