dongsu1539
2017-10-04 04:07
浏览 878
已采纳

Golang atomic.LoadUint32是否必要?

Golang's atomic package provides function func LoadUint32(addr *uint32) (val uint32). I looked into the assembly implementation:

TEXT ·LoadUint32(SB),NOSPLIT,$0-12
MOVQ    addr+0(FP), AX
MOVL    0(AX), AX
MOVL    AX, val+8(FP)
RET

which basically load the value from the memory address and return it. I'm wondering if we have a uint32 pointer(addr) x, what is the difference between calling atomic.LoadUint32(x) and directly access it using *x?

图片转代码服务由CSDN问答提供 功能建议

Golang的原子包提供函数 func LoadUint32(addr * uint32)(val uint32)。 我调查了汇编实现:

  TEXT·LoadUint32(SB),NOSPLIT,$ 0-12 
MOVQ addr + 0(FP),AX 
MOVL 0(AX),  AX 
MOVL AX,val + 8(FP)
RET 
   
 
 

基本上是从内存地址加载值并返回它。 我想知道我们是否 有一个uint32指针(addr) x ,调用 atomic.LoadUint32(x)和使用 * x 直接访问它有什么区别?

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

相关推荐 更多相似问题