和标题一样,是关于uint8、原子的读写操作吗?从逻辑上讲,8位变量的读写显然必须是一个cpu指令。但是在任何情况下,两个内核可以同时从内存中读取和写入数据,是否有可能以这种方式创建陈旧的数据呢?
发布于 2016-03-21 14:18:40
不能保证对本机类型的访问在任何平台原子上。这就是为什么会有sync/atomic。另见内存模型文档中的建议。
原子设置值的通用方法示例(玩)
var ax atomic.Value // may be globally accessible
x := uint8(5)
// set atomically
ax.Store(x)
x = ax.Load().(uint8)可能更有效的uint8 (玩)解决方案:
var ax int64 // may be globally accessible
x := uint8(5)
atomic.StoreInt64(&ax, 10)
x = uint8(atomic.LoadInt64(&ax))
fmt.Printf("%T %v\n", x, x)https://stackoverflow.com/questions/36133364
复制相似问题