Расскажи про memory model Go

Senior
188 просмотров
AFK Offer AI

Memory model Go определяет при каких условиях чтение переменной в одной горутине гарантированно увидит запись из другой. Без синхронизации компилятор и процессор могут переупорядочить операции, и ты увидишь устаревшие данные. Гарантии дают: запуск горутины, операции с каналами, mutex Lock/Unlock, sync.Once, atomic операции. Если happens-before нет — поведение undefined.

Следующий вопрос

Что выведет: s := "hello"; b := []byte(s); b[0] = 'H'; fmt.Println(s)?