Многопоточность в Rust: как Ownership, Send и Sync помогают бороться с гонками данных
Всем привет! В предыдущей статье мы с вами разобрали обычную проблему C++: десять потоков увеличивают общий счётчик, но из-за гонки данных программа может работать неправильно. В Rust мы с вами постараемся решить ту же самую задачу. Главное отличие заключается не в том, что Rust умеет создавать потоки каким-то лучшим способом, а дело в модели владения и системе типов: компилятор не позволяет безопасному коду произвольно разделять изменяемые данные между потоками. Но это кстати и не значит, что Rust автоматически исправляет любую ошибку в многопоточности. Логические ошибки, взаимные блокировки и неправильная синхронизация по-прежнему возможны. Будем разбираться с вами на практических примерах.
https://habr.com/ru/articles/1102290/
#программирование #sync #системное_программирование #многопоточность #mutex #send #rust #atomicusize