Go Race2024年8月29日 | 1 分钟阅读 当两个或多个 goroutine 试图访问同一个资源时,Go 中就会发生竞态条件。当一个变量试图读取和写入资源而没有考虑到其他例程时,可能会发生这种情况。 Go 竞态条件示例输出 foo: 0 Count: 1 bar: 0 Count: 1 foo: 1 Count: 2 foo: 2 Count: 3 foo: 3 Count: 4 bar: 1 Count: 2 foo: 4 Count: 5 foo: 5 Count: 6 foo: 6 Count: 7 bar: 2 Count: 3 bar: 3 Count: 4 bar: 4 Count: 5 foo: 7 Count: 8 foo: 8 Count: 9 bar: 5 Count: 6 bar: 6 Count: 7 foo: 9 Count: 10 bar: 7 Count: 8 bar: 8 Count: 9 bar: 9 Count: 10 last count value 10 正如你在上面的例子中看到的,计数资源被 2 个 go 例程访问。 每个例程迭代 10 次。 在这种情况下,计数变量最后应该是 20。 但事实并非如此,因为它正在模拟竞态条件。 下一个主题Go 互斥锁 |
我们请求您订阅我们的新闻通讯以获取最新更新。