我需要一個(gè)函數(shù)來在 Go 中原子地添加 float32 值。這是基于我發(fā)現(xiàn)的一些 C 代碼提出的:package atomicimport ( "sync/atomic" "unsafe" "math")func AddFloat32(addr *float32, delta float32) (new float32) { unsafeAddr := (*uint32)(unsafe.Pointer(addr)) for { oldValue := math.Float32bits(*addr) new = *addr + delta newValue := math.Float32bits(new) if atomic.CompareAndSwapUint32(unsafeAddr, oldValue, newValue) { return } }}它應(yīng)該工作(即真的是原子的)嗎?在 Go 中有更好/更快的方法嗎?
- 1 回答
- 0 關(guān)注
- 166 瀏覽
添加回答
舉報(bào)
0/150
提交
取消