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

多线程 – omp flush和cc-NUMA架构

发布时间:2020-12-15 02:32:31 所属栏目:Java 来源:网络整理
导读:我想念cc-NUMA架构以及需要刷新变量.我们都知道,如果两个线程修改相同的高速缓存行,那么“错误共享”条件将上升,迫使高速缓存行再次重新加载. 那么为什么我们需要刷新变量才能生成线程交换信息呢? 假设您在串行区域中声明: int flag=0; 然后在并行区域中,
我想念cc-NUMA架构以及需要刷新变量.我们都知道,如果两个线程修改相同的高速缓存行,那么“错误共享”条件将上升,迫使高速缓存行再次重新加载.
那么为什么我们需要刷新变量才能生成线程交换信息呢?
假设您在串行区域中声明:

int flag=0;

然后在并行区域中,线程0分配共享变量:

flag=1;

将线程1:

while (!flag){}

循环没有刷新终止?如果不是,为什么我们在cc-NUMA架构?

解决方法

不要忘记编译器还可以执行导致上述代码中断的优化,而不仅仅是CPU.

因此,我认为无论硬件支持高速缓存一致性,仍然需要刷新.

(编辑:李大同)

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

    推荐文章
      热点阅读