Вопрос проверяет базовое понимание конкурентного доступа к данным.
Потокобезопасность означает, что код корректно работает при одновременном доступе из нескольких goroutine или потоков. Данные не повреждаются и состояние остается корректным. Для этого используют mutex, каналы или атомарные операции. Без этого возможны гонки данных.
Потокобезопасность — это свойство программы корректно работать в условиях конкурентного доступа.
Определение:
Потокобезопасный код гарантирует корректность данных при одновременном доступе.
Если потокобезопасности нет:
Потеря обновлений.
Некорректные значения.
Краши и непредсказуемое поведение.
Пример гонки:
counter++
Эта операция состоит из нескольких шагов и не является атомарной.
Основные способы:
Mutex
Каналы
Atomic операции
Обычно:
Делать данные неизменяемыми, если возможно.
Минимизировать область блокировок.
Избегать глобального состояния.
Потокобезопасность — это обязательное свойство конкурентного кода, обеспечивающее корректность работы при параллельном доступе.