Карточка Junior sync и атомики обновлено
Типизированные атомики
Вопрос
Какие типы есть в sync/atomic начиная с Go 1.19?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
atomic.Int32, Int64, Uint32, Uint64, Uintptr, Bool, Value, Pointer[T] с методами Load, Store, Add, Swap, CompareAndSwap.
Ответ
atomic.Int32, Int64, Uint32, Uint64, Uintptr, Bool, Value, Pointer[T] с методами Load, Store, Add, Swap, CompareAndSwap.
Разбор
Их нельзя случайно прочитать неатомарно, и Int64 автоматически выравнивается даже на 32-битных платформах. В Go 1.23 добавились методы And и Or.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Код-ревью Go: ленивый синглтон и горячая перезагрузка конфига
Следующий вопрос
Атомики или мьютекс
Ещё по теме «sync и атомики»
- Глобальный максимум через CompareAndSwap
- Конкурентные переводы между счетами без дедлока
- Шардированная мапа с мьютексом на шард
- Что выведет Go: atomic.Int64 из 100 горутин
- Что выведет Go: sync.Once и OnceValue
- Код-ревью Go: кеш на RWMutex
- CompareAndSwap
- Флаг без синхронизации