В Go используют Mutex, RWMutex, WaitGroup, Once, Cond, атомики и каналы. Выбор mutex зависит от того, какие данные и операции нужно защищать.
Какие примитивы синхронизации бывают в Go? Какой mutex лучше подойдёт в данном случае?
В Go используют Mutex, RWMutex, WaitGroup, Once, Cond, атомики и каналы. Выбор mutex зависит от того, какие данные и операции нужно защищать.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В Go используют Mutex, RWMutex, WaitGroup, Once, Cond, атомики и каналы. Выбор mutex зависит от того, какие данные и операции нужно защищать.
Для обычного общего изменяемого состояния начните с Mutex. RWMutex имеет смысл при подходящей нагрузке с конкурентными читателями, но не гарантирует ускорения. Без исходного критического участка нельзя назвать лучший вариант; прежде измерений определите инвариант и убедитесь, что защищены все обращения.