vdanic

Results 1 issues of vdanic

题目: 6、请说明下面代码书写是否正确。 ``` var value int32 func SetValue(delta int32) { for { v := value if atomic.CompareAndSwapInt32(&value, v, (v+delta)) { break } } } ``` 解析: atomic.CompareAndSwapInt32 函数不需要循环调用。 疑问: `atomic.CompareAndSwapInt32`仅提供了原子交换的操作,我理解`SetValue`这个函数的用意应该就是让`value`加上`delta`大小的数值,所以在`atomic.CompareAndSwapInt32`操作失败,返回`False`的时候应该要循环重新读取新值然后进行CAS操作,直到`atomic.CompareAndSwapInt32`返回为`True`。...