![]() |
1
10
您不需要同步来访问
当要访问的变量
这在实践中意味着什么?
如果您有一个函数接收
作为计数器示例,如果函数接收到一个切片值
请参见此示例:
输出(在 Go Playground ):
专注于
现在如果
见相关/可能的副本: Immutable string and pointer address |
![]() |
2
3
在语言语法级别或标准库中对字符串类型定义的所有函数都返回一个新的字符串实例。没有一个函数在适当的位置改变字符串。只要遵循这个实践,您就可以同时获得安全。 |
![]() |
3
1
这就是问题所在。答案是:写字符串时同步。很明显
go编译器将强制
输出:
Go运行时
Data Race Detector
标记可变的不一致状态
输出:
原岗位:
一
例如,
输出:
这个
需要同步才能访问字符串变量。 |
![]() |
Rasim Avcı · 如何履行承诺。解析需要原子化的代码 6 年前 |
![]() |
Lingxi · 真正测试std::atomic是否无锁 6 年前 |
![]() |
Rajeev Mehta · 修改和读取原子变量 6 年前 |
![]() |
Chris Jefferson · 在Rust中获得“无序”语义 7 年前 |
![]() |
Jérôme B · redis自动切换值 7 年前 |
![]() |
krimog · 更新where select,保证原子性 7 年前 |