Go語言提供了傳統的同步goroutine的機制,就是對共享資源加鎖。如果需要順序訪問一個整形變量或者一段代碼,atomic和sync包里的函數提供了很好的解決方案。
原子函數:atmoic.AddInt64 atmoic.LoadInt64 atmoic.StoreInt64
AddInt64 這個函數會同步整型值的加法,方法是強制同一時刻只能有一個goroutine運行並完成這個加法操作。當goroutine試圖去調用任何原子函數時,這些goroutine都會自動根據所引用的變量做同步處理。
另外兩個有用的原子函數LoadInt64 和 StoreInt64,這兩個函數提供了一種安全地讀寫一個整型值的方式。
互斥鎖:
sync.Mutex