首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缓存行读写

问缓存行读写
EN

Stack Overflow用户
提问于 2021-09-15 13:15:36
回答 1查看 281关注 0票数 1

我有几个关于缓存线的问题。

在相同的缓存行中有两个变量,a和b。

线程1读取a,线程2读取b。

我们知道两个线程都读取整个缓存行(它们都读取a和b)。

但是,线程1修改a,线程2修改b。

  1. 是否将整个缓存行写入主内存?

如果这样做,是否会导致同一缓存行中的其他变量发生变化?

  • 缓存行在读写方面是否具有互斥性?
EN

回答 1

Stack Overflow用户

发布于 2021-09-15 21:19:28

1严格拒绝(变量,但不适用于位字段)。C/C++标准要求实现对相邻内存区域的可靠共享访问;

2a)在强有序系统(x86、SPARC TSO、IBM大型机)上,实现一致性协议类似于互斥,但只禁止同时写入两个CPU,同时允许并发写入和读取(在您的情况下,不同的变量是安全的)。见:https://en.wikipedia.org/wiki/Consistency_model#Relaxed_write_to_read;

2b)在弱排序系统(RISC-V、ARM、SPARC RMO)上,一致性协议的实现更有趣。请参阅:https://en.wikipedia.org/wiki/Consistency_model#Relaxing_read_and_read_to_write_program_orders

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69193913

复制
相关文章

相似问题

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