zoukankan      html  css  js  c++  java
  • 关于并发可见性的一点理解

    在看 《深入理解计算机系统》(CSAPP)第6章存储器层次结构 的时候突然想到在java并发编程 中的 可见性的问题,在这里简单记录一下,也不一定正确 ^_^

    我们从上面的图中可以看到Intel Core i7 中有4核,每一个核心中都有独立的L1 L2 高速缓存, 四个核心共享L3高速缓存。

    假设L1 L2高速缓存在数据写的时候采用的是写回的策略,简单来说就是仅仅更新高速缓存中的数据,这有在根据替换策略这条数据将要被新数据替换的时候才写回到更低层次的存储器中。

    那么现在有这样的场景: 每一核中都运行着一个线程,而这些线程共享同一变量a,如果线程0(运行在核0)对变量a执行写操作,那么从图中我们可以看到仅仅会更改核0中的L1高速缓存,另外三个核上运行的线程在写回操作(准确的说是 核0需要至少写回到L3,而另外三个核重新从L3读)前是不会看到这次写操作的,这就是并发编程中的写可见性问题。

    以上这是暂时的理解,留作记录以后补充。

  • 相关阅读:
    python爬虫headers设置后无效解决方案
    idea建立web项目servlet映射的地址/jsp访问不到
    bootstrap栅格系统错位问题
    python2 python3共存解决方案
    Springboot+Thymeleaf框架的button错误
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
  • 原文地址:https://www.cnblogs.com/zh1164/p/7822915.html
Copyright © 2011-2022 走看看