Nekrolm / ubbook

Путеводитель C++ программиста по неопределенному поведению
1.08k stars 52 forks source link

Race condition and data race #89

Closed Vsevak closed 1 year ago

Vsevak commented 1 year ago

Спасибо за сборник!

В главе Race condition стерлась разница между race condition и data race. Race condition не является UB в смысле компилятора и безопасности памяти. Только data race является UB, и возникает, если есть два и более обращения к одной переменной, хотя бы одно из которых является записью и хотя бы одно из который несинхронизировано. От data race потенциально можно было бы избавиться ценой производительности. А race condition - это ошибки логики, которые могут существовать в корректной с точки зрения стандарта программе. И Rust, в целом заимствующий модель атомиков из С++20, обеспечивает в safe гарантии по отсутствию data race и UB, но не пресекает создание race condition.

Nekrolm commented 1 year ago

Спасибо.

Я добавлю уже про race condition отдельную статью.