← Все новости
Многопоточность в Rust: как Ownership, Send и Sync помогают бороться с гонками данных

Многопоточность в Rust: как Ownership, Send и Sync помогают бороться с гонками данных

Всем привет! В предыдущей статье мы с вами разобрали обычную проблему C++: десять потоков увеличивают общий счётчик, но из-за гонки данных программа может работать неправильно.В Rust мы с вами постараемся решить ту же самую задачу.Главное отличие заключается не в том, что Rust умеет создавать потоки каким-то лучшим способом, а дело в модели владения и системе типов: компилятор не позволяет безопасному коду произвольно разделять изменяемые данные между потоками.Но это кстати и не значит, что Rust автоматически исправляет любую ошибку в многопоточности. Логические ошибки, взаимные блокировки и неправильная синхронизация по-прежнему возможны.Будем разбираться с вами на практических примерах. Читать далее