DevOps: Магистерский курс C++ (МФТИ, 2022-2023). Лекция 19. Многопоточность, часть 1. - видео HD

DevOps: Магистерский курс C++ (МФТИ, 2022-2023). Лекция 19. Многопоточность, часть 1. - видео
01:16:25

12n.ru 16695 роликов

Магистерский курс C++ (МФТИ, 2022-2023). Лекция 19. Многопоточность, часть 1. - видео.

Лекции в магистратуре МФТИ по современному C++ на русском языке. Кафедра микропроцессорных технологий.

На этой лекции мы выходим на коду нашего курса: многопоточность во всех её проявлениях. Начнём мы с грунтования фундамента и разбора простых и фундаментальных вещей. Что такое область памяти? Что такое поток? Что такое гонка? Зачем нужен volatile? Что такое безопасность относительно многопоточности? Мы ответим на все эти вопросы. Также мы разберём основные проблемы проектирования для многопоточной безопасности: API races и deadlocks.

Лектор: Константин Владимиров.
Дата лекции: 15 марта 2023 года.
Съёмка и звук: Юлий Тарасов.

Предыдущая лекция: youtu.be/_Jn7MAZYL2M
Следующая лекция: youtu.be/vVRNJjf1MCE

Слайды ко всем лекциям: sourceforge.net/projects/cpp-lects-rus/files/cpp-postgraduate
Примеры кода ко всем лекциям: github.com/tilir/cpp-masters

Timeline
00:00 Потоки исполнения
09:42 Области памяти и гонка
15:35 Volatile
27:20 Правила гонки и pthread
36:15 Мьютексы и их тонкости
46:20 Интермедия: безопасность исключений
54:05 Безопасность относительно потоков
01:00:30 API races
01:08:10 Deadlocks
01:14:20 Завершение

Errata
* Пока пусто
RSS
Ya Kryt
12:19
Константин, видимо, тут оговорка? Речь о безопасности относительно потоков. Спасибо, за прекрасную лекцию!
grincha09
13:19
+1
1:14:07 действительно ли scoped_lock тяжелее lock_guard? Говорят «You can consider lock_guard deprecated» и «scoped_lock was (among the multiple mutex stuff) designed as a replacement to lock_guard, since the former could not be modified without breaking ABI». Как думаете?
Константин Нестеров
13:55
+2
Здравствуйте! Спасибо за замечательную лекцию
Кажется, на слайде 32 нужно сделать мьютекс mutable, чтобы использовать его в константных методах top() и empty()
(если, конечно, имеется ввиду, что он — член класса)
Alexandr Grigoriev
01:11
На вызывается destroy, в котором вручную вызывает деструктор для каждого указателя на объект. Но ведь ::operator new в 73-й строке не создает объекты. Не будет ли при удалении UB?
Edgar Makarov
13:26
+3
Спасибо за лекцию! Кстати было бы интересно послушать про случайные числа, спектральные характеристики и энтропию
Sergey Grechishnikov
22:57
+1
Константин спасибо вам за лекцию
Artem Rusinov
23:08
+1
Спасибо! Все очень четко и понятно
Андрей Шерстобитов
15:30
+2
Спасибо за лекцию! На 45:21 задаётся вопрос сколько весит lock_guard, и Ваш ответ: «не дороже чем mutex». Имелось же в виду не дороже чем ссылка на мьютекс?
bookbrain
21:12
Добрый вечер многоуважаемый учитель, такой вопрос не касающийся тематики, а можно с группой познакомиться?
keesaev
00:49
+1
Лучший