我正在用golang写一个简单的并发测试程序,不明白每次capitalized
数组大小的不同输出!
data := []rune{'a', 'b', 'c', 'd'}
var capitalized []rune
capIt := func(r rune) {
capitalized = append(capitalized, unicode.ToUpper(r))
fmt.Printf("%c done!\n", r)
}
fmt.Printf("Before: %c\n", capitalized)
for i := 0; i < len(data); i++ {
go capIt(data[i])
}
time.Sleep(100 * time.Millisecond)
fmt.Printf("After: %c\n", capitalized)
输出:
B完成!A完成!完成了!完成了!After:[D B C A]
完成!完成!C完成!B完成!After:[D B A]
完成了!完成了!C完成!B完成!之后:[B]
完成了!完成了!C完成!B完成!After:[A B C]
D完成!B完成!A完成!C完成!之后:[B C]
1条答案
按热度按时间vlurs2pr1#
Go: Data Race Detector
你有数据竞赛。
racer.go: