Этот вопрос проверяет понимание различий между race condition и data race в многопоточном программировании.
Race condition — это общая проблема, когда поведение программы зависит от порядка выполнения потоков. Data race — это конкретный тип race condition, когда несколько потоков одновременно обращаются к одной памяти, и хотя бы один из доступов является записью.
Оба понятия связаны с ошибками многопоточности, но имеют разные акценты.
1. Race condition:
Возникает, когда результат выполнения зависит от последовательности или timing of events.
Не всегда involves shared memory (например, condition race в работе с файлами).
2. Data race:
Частный случай race condition.
Происходит при одновременном доступе к shared memory с хотя бы одной записью.
Может lead к неопределённому поведению и crashes.
Пример:
Data race: два потока увеличивают одну переменную без синхронизации. Race condition: два потока пытаются создать файл, и только один должен succeed.