Книга позволяет программистам получить четкое представление о низкоуровневой конкурентности и ее реализации. Даны основы конкурентности в Rust. Раскрыты понятия об атомарности и упорядочении памяти. Рассмотрены практические аспекты создания своих собственных каналов, своего собственного типа Arc и своих собственных блокировок Дано представление о внутренней “кухне” процессора. Рассказано о примитивах операционной системы. Предложены идеи для самостоятельной разработки решений, связанных с вычислениями в конкурентном режиме.
Для Rust-программистов
Вы изучите применение Rust в следующих областях:
Язык программирования Rust великолепно справляется с конкурентными вычислениями, а в его экосистеме имеется множество библиотек, включающих широкий набор структур данных, блокировок и многого другого, предназначенного для работы в среде конкурирующих потоков. Но корректная реализация этих структур может оказаться весьма непростой задачей. Ошибки, допущенные в вопросах упорядочения памяти, нередко встречаются даже в самых востребованных библиотеках.
В этой книге, имеющей сугубо практическую направленность, Мара Бос, руководитель команды разработчиков библиотеки Rust, помогает Rust-программистам всех уровней получить четкое представление о низкоуровневой конкурентности. Вы узнаете об атомарности и упо-рядочении памяти, а также о том, как они сочетаются с базовыми API-интерфейсами опера-ционной системы для создания таких наиболее востребованных примитивов, как мьютексы и условные переменные. Прочитав книгу, вы получите четкое представление о том, как связаны друг с другом используемая в Rust модель памяти, процессор и особенности той или иной операционной системы.
Вы узнаете:
Об исключительной роли имеющейся в Rust сиcтемы типов в корректном программировании конкурентности
Все о мьютексах, условных переменных, атомарности и упорядочении памяти
Что на самом деле происходит с атомарными операциями в процессорах Intel и ARM
Как реализуются блокировки при поддержке операционной системы
Как создается корректный программный код, включающий конкурентность, атомарность и блокировки
Какими приемами можно воспользоваться для правильного создания своих собственных примитивов блокировки и синхронизации