atomic.Value 泛型
type Value[T any] struct {
v *T
}
func (v *Value[T]) Load() (val T) {
pointer := (*unsafe.Pointer)(unsafe.Pointer(&v.v))
val = *(*T)(atomic.LoadPointer(pointer))
return
}
func (v *Value[T]) Store(arg T) {
pointer := (*unsafe.Pointer)(unsafe.Pointer(&v.v))
for !atomic.CompareAndSwapPointer(pointer, atomic.LoadPointer(pointer), unsafe.Pointer(&arg)) {
}
}
- 采用1.18泛型重写atomic.Value 有没有大佬指点一下