#10 – Введение в многопоточность
Видеоурок
Многопоточность — это возможность программы выполнять несколько задач одновременно, что важно для повышения производительности. Rust предлагает мощные инструменты для работы с потоками, уделяя особое внимание безопасности и эффективности. Давайте разберёмся, как это работает.
Что такое поток?
Поток (thread) — это единица выполнения программы. Современные процессоры могут выполнять множество потоков одновременно, что позволяет использовать их ресурсы более эффективно. В Rust работа с потоками осуществляется через стандартную библиотеку.
Создание потоков
Чтобы создать поток, используется функция thread::spawn. Вот простой пример:
use std::thread;
fn main() {
thread::spawn(|| {
for i in 1..5 {
println!("Поток 1: {}", i);
}
});
for i in 1..5 {
println!("Главный поток: {}", i);
}
}В этом примере создаётся новый поток, который выполняет свою задачу параллельно с главным потоком.
Ожидание завершения потоков
Когда создаётся поток, важно дождаться его завершения, чтобы убедиться, что все задачи выполнены. Для этого используется метод join:
use std::thread;
fn main() {
let handle = thread::spawn(|| {
for i in 1..5 {
println!("Работаю в отдельном потоке: {}", i);
}
});
handle.join().unwrap();
println!("Поток завершён.");
}Метод join блокирует выполнение главного потока, пока не завершится дочерний.
Итог
Многопоточность в Rust мощная и безопасная благодаря строгой системе типов и инструментам для управления потоками и синхронизации. Освоив основы, вы сможете создавать более производительные программы, избегая распространённых ошибок, таких как гонки данных. Попробуйте создать свою программу с потоками, чтобы закрепить эти знания!
Исходный код
Весь код будет доступен после подписки на проект! Задание к уроку
Необходимо оформить подписку на проект, чтобы получить доступ ко всем домашним заданиям
Большое задание по курсу
Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца
Также стоит посмотреть