Понимание горутин

Я пытаюсь понять параллелизм в Go. В частности, я написал эту небезопасную программу:

package main

import "fmt"

var x = 1

func inc_x() { //test
  for {
    x += 1
  }
}

func main() {
  go inc_x()
  for {
    fmt.Println(x)
  }
}

Я признаю, что должен использовать каналы, чтобы предотвратитьxно это не главное здесь. Программа печатает1 и затем кажется, что цикл навсегда (без печати ничего больше). Я ожидал бы, что он напечатает бесконечный список чисел, возможно, пропуская одни и повторяя другие из-за состояния гонки (или хуже - печатая число, пока оно обновляется вinc_x).

Мой вопрос: почему программа печатает только одну строку?

Просто чтобы прояснить: я не использую каналы специально для этого примера игрушки.

Ответы на вопрос(4)

Ваш ответ на вопрос