TGViewer
Библиотека Go-разработчика | Golang Библиотека Go-разработчика | Golang @goproglib · 24.1K subscribers
Post #7505 1.64K
💡 Код работает. А data race уже есть

В Go можно записать значение в одной горутине, прочитать в другой — и получить именно тот результат, который ожидал.

Проблема в том, что Go этого не гарантирует без синхронизации.

Например, даже такой паттерн:


msg = "hello"
done = true

for !done {}
fmt.Println(msg)


может выглядеть абсолютно логично, но содержит две data race.

🔜 В разборе наглядно показывают, почему так происходит: от работы компилятора и CPU до memory model Go. А затем — чем правильно заменить самодельный флаг:


atomic → Mutex → WaitGroup → channels → sync.Once


Отдельно разбирается интересный эксперимент, где две горутины иногда обе читают 0, хотя на первый взгляд это кажется невозможным.

Если с конкурентностью в Go приходится работать не только на уровне «поставь mutex», этот разбор стоит посмотреть.

📍 Навигация: Вакансии • Задачи • Собесы

🐸 Библиотека Go-разработчика
  • 🤔 5
More from @goproglib
  1. Sep 25, 2026🤡🤡 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoGiggle
  2. Sep 23, 2026💥 TCP/IP: что происходит с данными в сети Когда Go-приложение отправляет данные по сети,…
  3. Sep 22, 2026🔴 Встроенные функции len, make, panic — встроенные функции Go, которые можно использовать…
  4. Sep 21, 2026🤩 Go с нуля: серия базовых шпаргалок Собрали путь от Hello, World! до goroutines, channel…
  5. Sep 20, 2026🤔 Вопрос с собеседования по Go Что выведет программа? ❤️ — [1 2 3 4 5] / [1 2 10] 🔥 — [1…
  6. Sep 19, 2026🛠 Rune — open-source IDE и terminal multiplexer на Go Rune объединяет IDE, терминал и AI-…
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 →