Кроме mutex используют атомарные операции, каналы с единственным владельцем состояния, неизменяемые снимки и разделение данных. Выбор зависит от защищаемого инварианта.
Что ещё, кроме мьютекса, можно использовать для защиты от race condition?
Кроме mutex используют атомарные операции, каналы с единственным владельцем состояния, неизменяемые снимки и разделение данных. Выбор зависит от защищаемого инварианта.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Кроме mutex используют атомарные операции, каналы с единственным владельцем состояния, неизменяемые снимки и разделение данных. Выбор зависит от защищаемого инварианта.
Атомик подходит для независимого счётчика или публикации ссылки, но несколько атомарных полей не делают составное изменение атомарным. Канал помогает организовать последовательную обработку одним владельцем, если другие горутины не обходят этот протокол.
Иногда лучший способ — вообще не разделять изменяемые данные. Race detector помогает искать гонки в выполненных сценариях, но его молчание не доказывает отсутствие всех возможных гонок.