На самом деле мир немного сложнее и за многопоточным программированием скрывается огромная и интересная теория. Помимо этого, мы рассмотрим аппаратные инструкции и абстракции над ними, которые позволяют контролировать порядок исполнения инструкций в процессоре
1. Memory model в языках программирования
2. Разбор memory model Go
3. Отношения sequenced before, synchronized before, happens before
4. Понятие линеаризуемости структур данных
5. Понятие thread-safe структуры данных
6. Конвейер процессора, out-of-order execution
7. Пример инструкций для синхронизаций
8. Устройство барьеров на x86, барьеры на чтение, на запись, acquire, release.
9. Регулирование модели памяти вручную на примере Go и C++
Результат:Разобрался с формализмом многопоточного программирования, в частности, с моделью памяти в Go.
Смотреть доклад на GolangConf