幾日的奔波, 小白來到了一個新的小鎮, 街上人來人往, 車水馬龍, 一切顯的繁華而又有序.
啃了幾天乾糧嘴裡都快淡出個鳥來了, 找家客棧歇下腳, 順便找點好吃的 —— 小白心想.
打聽了下, 鎮上有家 “雙珠砂鍋” 味道不錯, 就這家了.
吃完準備結賬時, 小白看到店裡有個 “答題免單” 的活動, 題目如下:
// main.go
package main
import (
"fmt"
"sync"
)
func main() {
counter := 0
wg := sync.WaitGroup{}
for i := 0; i < 10000; i++{
wg.Add(1)
go func() {
counter++
wg.Done()
}()
}
wg.Wait()
fmt.Println(counter)
}
看起來很簡單, 不就是讓一萬個協程累加計數器嘛, 結果應該是 10000
才對.
可麻溜的執行後輸出如下:
go run main.go
9471
咦, 小白楞了一下, 不信邪的又執行了一遍:
go run main.go
9456
啊呀我去, 見鬼了, 小白賭氣的又執行了 N 多次, 結果沒有一個輸出是等於 10000 的, 基本都小於 10000.
許久, 小白敗下陣來, 不得不承認是自己沒看懂這道題.
只好乖乖的付賬走人.
“我一定要吃上一頓霸王餐” —— 不服輸的小白惡狠狠地說到.
本作品採用《CC 協議》,轉載必須註明作者和本文連結