Современные высокопроизводительные процессоры объединяют в себе по несколько вычислительных ядер, которые могут исполнять разные программные потоки, что влечёт за собой: необходимость в синхронизации работы таких потоков, и слежение за когерентностью кэш разных ядер при работе с общей памятью.
Основные моменты лекции:
2:20 - параллелизм уровня потоков
5:17 - необходимость синхронизации потоков
6:52 - потоково-безопасное программирование
7:50 - пример, на основе которого будет поясняться лекция
11:06 - буфер FIFO для ослабления зависимости между потоками
13:37 - пример реализации буфера FIFO
15:56 - семафоры
19:00 - семафор для установки приоритета
20:24 - семафор для распределения ресурсов
21:57 - буфер FIFO с семафорами
24:44 - пример одновременных транзакций (проблема)
28:50 - семафор для взаимных исключений
29:55 - буфер FIFO с семафорами и несколькими производителями
32:39 - необходимость атомарных инструкций для реализации семафоров
35:31 - взаимоблокир