首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >uint8的读和写是原子的吗?

uint8的读和写是原子的吗?
EN

Stack Overflow用户
提问于 2016-03-21 14:13:41
回答 1查看 7.5K关注 0票数 8

和标题一样,是关于uint8、原子的读写操作吗?从逻辑上讲,8位变量的读写显然必须是一个cpu指令。但是在任何情况下,两个内核可以同时从内存中读取和写入数据,是否有可能以这种方式创建陈旧的数据呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-21 14:18:40

不能保证对本机类型的访问在任何平台原子上。这就是为什么会有sync/atomic。另见内存模型文档中的建议

原子设置值的通用方法示例()

代码语言:javascript
运行
复制
var ax atomic.Value // may be globally accessible

x := uint8(5)

// set atomically
ax.Store(x)

x = ax.Load().(uint8)

可能更有效的uint8 ()解决方案:

代码语言:javascript
运行
复制
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)
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36133364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档