Sync

WaitGroup

一般來說如果有go routine 再跑必須用 time.Sleep()WaitGroup 來避免程式結束但go routine還沒跑完。

有三個方法

WaitGroup 對象內部有一個計數器,最初從0開始,它有三個方法:Add(), Done(), Wait() 用來控制計數器的數量。Add(n) 把計數器設置為n ,Done() 每次把計數器-1 ,wait() 會阻塞代碼的運行,直到計數器地值減為0

Mutex

可以控制多個 goroutine 不會同時存取相同變數,產生 data races。

如果把 inc 裡面的 lock 移除,則每次產生的結果都會不同

Last updated

Was this helpful?