日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Go语言自学系列 | golang并发编程之原子变量的引入

發布時間:2024/3/26 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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并发编程之原子变量的引入的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。