猿问

使用原子而不是线程线程安全?

有一个 parm 读得更多,写得更少,而且我不想使用互斥锁。我通过unsafeand完成了这样的操作atomic:


type tmp struct {

}

var value unsafe.Pointer 


func GetValue() *tmp {

    return (*tmp)(atomic.LoadPointer(&value))

}


func SetValue(p *tmp) {

    atomic.StorePointer(&value, unsafe.Pointer(p))

}

这是线程安全的吗?和 atomic.StorePointer happen beforeatomic.LoadPointer ?


慕虎7371278
浏览 217回答 3
3回答

慕田峪4524236

在您不知道首先发生什么的意义上,它将是线程安全的,但更新是原子的。您是否考虑过使用 RWMutex 代替?除非有写操作,否则不会锁定读者。
随时随地看视频慕课网APP

相关分类

Go
我要回答