TGViewer
Golang Golang @golang_google · 40.5K subscribers
Post #3616 8.21K
👣 Go: почему работающий код может содержать гонку данных

Одна горутина записывает значение и выставляет done = true. Другая ждёт этот флаг и читает результат. Программа выводит правильный ответ, но без синхронизации такой код содержит data race.

В статье разбирают:

* когда изменения памяти становятся видимыми другим горутинам;
* как компилятор и процессор могут менять порядок операций;
* что гарантирует отношение happens-before;
* как атомики, мьютексы и каналы обеспечивают синхронизацию;
* почему гонки при работе со строками, срезами и интерфейсами особенно опасны.

С примерами кода, выводом go run -race и экспериментом, где две горутины одновременно прочитали старые значения.

https://func25.dev/posts/go-memory-visibility/

#Go #Golang
  • ❤ 12
  • 😁 4
  • 👍 2
  • 🔥 1
  • 🥰 1
  • 😢 1
More from @golang_google
  1. Sep 18, 2026🔥 Rune - быстрый IDE и terminal multiplexer с GPU-рендерингом, который теперь открыт на G…
  2. Sep 16, 2026🔥 Большой гайд по миграции с Go на Rust Для разработчиков переход обычно упирается не в с…
  3. Sep 15, 2026🔥 Yoke - управление пакетами Kubernetes без гор YAML Вместо сложных Helm-шаблонов Yoke по…
  4. Sep 13, 2026🔥 Yzma - прямое подключение `llama.cpp` к Go-приложениям для локального inference Проект…
  5. Sep 12, 2026🐳 Как правильно использовать Docker для Go-приложения - пошаговый гайд Хороший разбор от…
  6. Sep 12, 2026AvitoTech всегда славился своими проектами на День разработчика, но в этот раз ребята прев…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →