zhangzzzzz
V2EX  ›  问与答

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

  •  
  •   zhangzzzzz · Nov 28, 2017 · 2115 views
    This topic created in 3116 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   ·   5975 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 65ms · UTC 06:12 · PVG 14:12 · LAX 23:12 · JFK 02:12
    ♥ Do have faith in what you're doing.