Go 武林外傳 - 霸王餐 (中)

taadis發表於2020-03-19

沒成功吃上 “霸王餐” 的小白帶著滿腦子的困惑就在這家客棧住下了.

隨後的幾天, 小白日思夜想, 白天盼月亮, 晚上想太陽…百撕不得騎姐.

無意中小白在晃盪時看到這麼一篇文章 Go 中的競態條件探測器.

仔細翻了翻, 小白眼前一亮.

於是趕緊拿來試了試想不明白的那道題.

在執行命令中新增了 -race 引數指令

go run -race main.go

這次輸入如下:

==================
WARNING: DATA RACE
Read at 0x00c00006a068 by goroutine 8:
  main.main.func1()
      E:/xiaobai/case1/main.go:14 +0x3f

Previous write at 0x00c00006a068 by goroutine 7:
  main.main.func1()
      E:/xiaobai/case1/main.go:14 +0x55

Goroutine 8 (running) created at:
  main.main()
      E:/xiaobai/case1/main.go:13 +0xef

Goroutine 7 (finished) created at:
  main.main()
      E:/xiaobai/case1/main.go:13 +0xef
==================
9992
Found 1 data race(s)
exit status 66

可以看到一個明顯的警告資訊 “WARNING: DATA RACE”.

什麼意思? 怎麼就資料衝突了呢?

  • 還有這裡的 0x00c00006a068 是什麼東東?
  • 還有這裡的 0x3f, 0x55, 0xef 又是什麼東東?

繼續看輸出資訊…

本作品採用《CC 協議》,轉載必須註明作者和本文連結

覺得還不錯點個讚唄!

相關文章