C++ lectures at MIPT (in Russian). Lecture 12. Concurrency, part 1

preview_player
Показать описание
Лекции в магистратуре МФТИ по C++ на русском языке.

В этой лекции мы подробно остановимся на конкуренции потоков за ресурсы, в частности за память. Будут рассмотрены основные механизмы синхронизации из стандартной библиотеки, а также тонкие вопросы data/api races и deadlocks

Лектор: Константин Владимиров
Дата лекции: 18 февраля 2020 года
Съёмка и звук: Дмитрий Рябцев

Errata:
* пока здесь пусто
Рекомендации по теме
Комментарии
Автор

10:30 Если выполнить данную программу на одном ядре x86-64, то получим вполне честный ноль (хотя это не отменяет data race и состояние UB)
На самом деле никакой битовой магии там нет, потоки выполняясь на разных физических ядрах, не сбрасывают в рам свои кэш линии вовремя и из-за этого в итоге получается мусор.

dmitry
Автор

1:09:00
Не вполне понятно, в чём проблема с resready=1, когда кто-то читает из него 1, ресурс уже инициализирован.
Или в с++ есть реордеринг и запись может произойти до предыдущей инструкции(resptr=new ...)?

vp_arth
Автор

Ну собственно последняя причина не ставить в top() и empty() блокировку: потому что это поломает их const-квалификаторы

volodiaagadjanov