Go语言自学系列 | golang并发编程之原子变量的引入
生活随笔
收集整理的這篇文章主要介紹了
Go语言自学系列 | golang并发编程之原子变量的引入
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
視頻來源:B站《golang入門到項目實戰 [2021最新Go語言教程,沒有廢話,純干貨!持續更新中...]》
一邊學習一邊整理老師的課程內容及試驗筆記,并與大家分享,侵權即刪,謝謝支持!
附上匯總貼:Go語言自學系列 | 匯總_COCOgsta的博客-CSDN博客
先看一個實例
package main import ( "fmt" "sync" "time" ) var i = 100 var lock sync.Mutex func add() { lock.Lock() i++ lock.Unlock() } func sub() { lock.Lock() i-- lock.Unlock() } func main() { for i := 0; i < 100; i++ { go add() go sub() } time.Sleep(time.Second * 3) fmt.Printf("i: %v\n", i) }運行結果
[Running] go run "d:\SynologyDrive\軟件開發\go\golang入門到項目實戰\goproject\360duote.com\pro01\test.go" i: 100這是我們之前的寫法,使用鎖實現協程的同步
下面使用原子操作
package main import ( "fmt" "sync/atomic" "time" ) var i int32 = 100 func add() { atomic.AddInt32(&i, 1) } func sub() { atomic.AddInt32(&i, -1) } func main() { for i := 0; i < 100; i++ { go add() go sub() } time.Sleep(time.Second * 3) fmt.Printf("i: %v\n", i) }運行結果
[Running] go run "d:\SynologyDrive\軟件開發\go\golang入門到項目實戰\goproject\360duote.com\pro01\test.go" i: 100總結
以上是生活随笔為你收集整理的Go语言自学系列 | golang并发编程之原子变量的引入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 统信UOS操作系统桌面管理员培训第三章-
- 下一篇: Unity 动态循环设置材质球的图片