вторник, 21 июля 2020 г.

Rust, Multithread

Online Rust Playground

//Multithread
use std::thread;
use std::sync::mpsc;

fn main() {
    //Создаем канал связи между параллельными потоками
    let (p_tx, p_rx) = mpsc::channel();
    //Создаем параллельный поток и биндим к ручке
    let handle = thread::spawn(move || {
        //Получаем данные из основного потока
        let d = p_rx.recv().unwrap();
        //Обрабатываем данные в параллельном потоке
        calc(d);
    });
   
    //Основной поток:
    //Создаем данные для обработки
    let data = Data { str: "parallel!".to_string() };
    //Передаем данные в параллельный поток
    p_tx.send(data).unwrap();
    //Сводим потоки через ручку
    handle.join().unwrap();
}

//Функция для обработки данных в параллельном потоке
fn calc(data: Data) {
    println!("Hello {}", data.str);
}

//Данные для передачи между потоками
struct Data {
    str: String,
}

Комментариев нет:

Отправить комментарий