相关疑难解决方法(0)

了解goroutines

我试图理解Go中的并发性.特别是,我写了这个线程不安全的程序:

package main

import "fmt"

var x = 1

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

func main() {
  go inc_x()
  for {
    fmt.Println(x)
  }
}
Run Code Online (Sandbox Code Playgroud)

我认识到我应该使用频道来防止竞争条件x,但这不是重点.该程序打印1,然后似乎永远循环(没有打印任何更多).我希望它打印一个无限的数字列表,可能会因为竞争条件而跳过一些并重复其他数字(或者更糟糕的是 - 在更新时打印数字inc_x).

我的问题是:为什么程序只打印一行?

需要明确的是:我没有故意使用这个玩具示例的频道.

concurrency go race-condition

41
推荐指数
3
解决办法
8858
查看次数

标签 统计

concurrency ×1

go ×1

race-condition ×1