使用go语言中atomic包实现较低代价的原子性操作
package main
import (
"sync"
"sync/atomic"
)
var total uint64
func worker(wg *sync.WaitGroup) {
defer wg.Done()
var i uint64
for i = 0; i <= 100; i++ {
atomic.AddUint64(&total, i)
}
}
func main() {
var wg sync.WaitGroup
wg.Add(2)
go worker(&wg)
go worker(&wg)
fmt.Println(total)
}
本文介绍使用Go语言的atomic包来实现高效且安全的原子性操作。通过具体代码示例展示了如何利用atomic.AddUint64函数更新共享变量,避免竞态条件,确保并发安全性。
653

被折叠的 条评论
为什么被折叠?



