perfbook.pdf
Нашел отличную книгу по параллельному программированию: "Is Parallel Programming Hard, And, If So, What Can You Do About It?" Пола Маккенни (Paul E. McKenney).
Это не очередной учебник с сухими теоремами. Это практическое руководство от человека, который годами пилит ядро Linux и знает, где именно у многопоточности растут ноги (и грабли).
О чем:
* Почему ++i в многопоточной среде — это зло, а атомарные операции не всегда спасают.
* Как работает память на уровне железа: кэши, барьеры, ложное разделение строк. Без этого писать быстрый код бессмысленно.
* RCU (Read-Copy Update) — магия, которая позволяет читать данные без блокировок. Объяснено так, что наконец-то понятно.
* Как дебажить гонки данных, которые проявляются раз в месяц на продакшене.
* Много примеров на C, но принципы универсальны для любого системного языка (Go, Rust, C++).
Кому зайдет:
Бэкендерам, которые хотят понять, почему их микросервис тормозит под нагрузкой. Системным программистам. Всем, кто пишет код ниже уровня абстракции "просто вызови API".
Фишка:
Автор пишет очень честно. Если что-то сложно — он говорит об этом. Если решение "грязное", но рабочее — он его дает. Никакой воды, только хардкорная инженерия.
Книга бесплатная, обновляется прямо в Git. Можно читать онлайн или скачать PDF.
🔗 Ссылка на репозиторий с книгой
Сохраняйте в закладки, когда дойдете до главы про барьеры памяти, она вам пригодится.
Это не очередной учебник с сухими теоремами. Это практическое руководство от человека, который годами пилит ядро Linux и знает, где именно у многопоточности растут ноги (и грабли).
О чем:
* Почему ++i в многопоточной среде — это зло, а атомарные операции не всегда спасают.
* Как работает память на уровне железа: кэши, барьеры, ложное разделение строк. Без этого писать быстрый код бессмысленно.
* RCU (Read-Copy Update) — магия, которая позволяет читать данные без блокировок. Объяснено так, что наконец-то понятно.
* Как дебажить гонки данных, которые проявляются раз в месяц на продакшене.
* Много примеров на C, но принципы универсальны для любого системного языка (Go, Rust, C++).
Кому зайдет:
Бэкендерам, которые хотят понять, почему их микросервис тормозит под нагрузкой. Системным программистам. Всем, кто пишет код ниже уровня абстракции "просто вызови API".
Фишка:
Автор пишет очень честно. Если что-то сложно — он говорит об этом. Если решение "грязное", но рабочее — он его дает. Никакой воды, только хардкорная инженерия.
Книга бесплатная, обновляется прямо в Git. Можно читать онлайн или скачать PDF.
🔗 Ссылка на репозиторий с книгой
Сохраняйте в закладки, когда дойдете до главы про барьеры памяти, она вам пригодится.