网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 后端开发 > Go >

go学习笔记:atomic.AddInt32(&count, 1)中,count前为

时间:2025-07-23 23:39

人气:

作者:admin

标签:

导读:原代码 func AtomicCounterDemo() { var count int32 var wg sync.WaitGroup for i := 0; i lt; 10; i { wg.Add(1) go func() { defer wg.Done() for j := 0; j...

原代码

func AtomicCounterDemo() {
	var count int32
	var wg sync.WaitGroup

	for i := 0; i < 10; i++ {
		wg.Add(1)
		go func() {
			defer wg.Done()
			for j := 0; j < 1000; j++ {
				atomic.AddInt32(&count, 1)
			}
		}()
	}
	wg.Wait()
	fmt.Println("最终计数器的值:", count)
}

在 Go 语言中,atomic.AddInt32 的函数签名如下:

func AddInt32(addr *int32, delta int32) int32

其中第一个参数 addr 是一个指向 int32 类型变量的指针,也就是 *int32。

为什么要加 &

1. count 是一个 int32 类型的变量。
2. &count 表示取 count 变量的内存地址,也就是 count 的指针。
3. 原子操作需要直接操作变量的内存地址,才能保证并发安全。

举例:

var count int32
atomic.AddInt32(&count, 1) // 传入 count 的地址

如果不加 &,直接写 atomic.AddInt32(count, 1),会报错,因为类型不匹配(需要指针,实际传了值)。

总结:

加 & 是为了传递变量的地址(指针),让原子操作函数能直接修改该变量的值,实现并发安全。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信