[Go] golang原子函数锁住共享资源
- 作者: 五速梦信息网
- 时间: 2026年04月04日 13:58
[Go] golang原子函数锁住共享资源
<div>
陶士涵
2024-10-15 05:23:05
</div>
<pre>package main
import (
"fmt"<br/>
"runtime"<br/>
"sync"<br/>
"sync/atomic"<br/>
)
var (
//全局变量<br/>
counter int64<br/>
//计数信号量<br/>
wg sync.WaitGroup<br/>
)
func main() {
fmt.Println("hello")<br/>
//计数加2,等待两个goroutine<br/>
wg.Add(2)<br/>
go incCounter()<br/>
go incCounter()<br/>
//主goroutine等待子goroutine结束<br/>
wg.Wait()<br/>
fmt.Println("最终counter值:", counter)<br/>
}
//增加counter的值函数
func incCounter() {
//函数结束,减小信号量<br/>
defer wg.Done()<br/>
for count := 0; count < 2; count++ {<br/>
//安全的对counter加1<br/>
atomic.AddInt64(&counter, 1)<br/>
//强制调度器必须切换<br/>
runtime.Gosched()<br/>
}<br/>
}
<div>






