zhangzzzzz
V2EX  ›  问与答

C 语言中使用 volalite 关键字能否从 cpu 缓存中读值

  •  
  •   zhangzzzzz · Nov 28, 2017 · 2050 views
    This topic created in 3089 days ago, the information mentioned may be changed or developed.

    之前一直记得 volatile 关键字能避免编译器优化,每次都从内存中取值。 但今天看到段代码定义了一个数组

    volatile unsigned char data[L1CACHE_SIZE + CACHELINE_SIZE];
    for(int i = 0; i < sizeof(data); i += CACHELINE_SIZE)
    

    L1CACHE SIZE 为一级缓存大小,注释中说这样声明是为了保证每次遍历都会从二级缓存中读值

    leavic
        1
    leavic  
       Nov 29, 2017 via iPhone
    我怀疑一二级缓存的映射地址根本就不开放给用户
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3883 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 05:02 · PVG 13:02 · LAX 22:02 · JFK 01:02
    ♥ Do have faith in what you're doing.