Писать корректные однопоточные приложения сложно. Писать корректные многопоточные приложения на несколько порядков сложнее. Потому что, все, что может поломаться в однопоточном приложении, может также сломаться и в многопоточном, но в добавок к этому много других подводных камней скрываются под потоками. В этом докладе я хочу рассказать о том, что делает многопоточное программирование таким сложным: начиная с хардвара и двигаясь по всему софтверному стэку (ОС, рантайм, приложение). Поговорим про то, какие фундаментальные вещи полезно знать и о чем стоит помнить прежде чем нырять с головой в многопоточность. А еще мы рассмотрим какие альтернативные модели многопоточности существуют и как они могут упростить нам жизнь.