加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

多线程 – 高速缓存一致性的要点是什么?

发布时间:2020-12-14 16:19:07 所属栏目:Java 来源:网络整理
导读:在像x86这样的CPU上提供高速缓存一致性,从实践的角度来看,这是有用的吗?我明白,这个想法是使内核更新在一个核心上完成,在所有其他内核上可以立即显示.这是一个有用的属性.但是,如果不是在汇编语言中编写,那么不能太依赖它,因为编译器可以在寄存器中存储变量
在像x86这样的CPU上提供高速缓存一致性,从实践的角度来看,这是有用的吗?我明白,这个想法是使内核更新在一个核心上完成,在所有其他内核上可以立即显示.这是一个有用的属性.但是,如果不是在汇编语言中编写,那么不能太依赖它,因为编译器可以在寄存器中存储变量赋值,而不要将它们写入内存.这意味着还必须采取明确的步骤,以确保在其他线程中完成的内容在当前线程中可见.因此,从实际的角度来看,什么是高速缓存一致性?

解决方法

想像你这样做:
lock(); //some synchronization primitive e.g. a semaphore/mutex
globalint = somevalue;
unlock();

如果没有缓存一致性,那么最后一个unlock()将不得不保证globalint现在可以随处可见,所以您需要做的只是将其写入内存并让硬件做到这一点.一个软件解决方案将会保持哪些内存存在于哪个高速缓存中,哪个内核以某种方式确保它们是原子同步的.

如果您可以找到一个软件解决方案来跟踪需要保持同步的高速缓存中存在的所有内存,那么您将获得一项奖励,这比当前的硬件解决方案更有效率.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读