Модель памяти Go

3 вопросов

Go Memory Model: happens-before, видимость записей между горутинами, переупорядочивание операций компилятором и процессором, синхронизация через каналы, мьютексы и atomic.

1 Какая операция НЕ создает happens-before гарантию между горутинами? 🟡 Средний
Ответ: C) Присваивание обычной переменной без синхронизации

Обычное присваивание без синхронизации не гарантирует видимость другим горутинам. Нужен канал, мьютекс, WaitGroup или atomic.

Подробнее →
2 Что гарантирует модель памяти Go (Go Memory Model)? 🔴 Сложный
Ответ: B) При каких условиях чтение переменной в одной горутине гарантированно увидит значение, записанное в другой (happens-before)

Go Memory Model определяет happens-before - при каких операциях синхронизации чтение в одной горутине гарантированно увидит запись из другой.

Подробнее →
3 Может ли компилятор Go переупорядочить операции чтения и записи внутри одной горутины? 🔴 Сложный
Ответ: B) Да, если это не меняет наблюдаемое поведение внутри этой горутины, но другие горутины могут увидеть другой порядок

Компилятор и процессор могут переупорядочивать операции, сохраняя семантику в рамках одной горутины. Без синхронизации другие горутины могут видеть записи в ином порядке.

Подробнее →
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.