• 毛利
    2019-11-07
    为什么
    simple adder takes 15
    volatile adder takes 527

    volatile 大于simple

    作者回复:
    volatile要操作主存,不能用cpu的高速缓存,所以更慢。

    
    
  • 大王叫我来巡山
    2019-11-07
    会不会是因为long类型的加法操作不是原子性的而造成的读不一致

    作者回复:
    应该不会,单次的写应该是原子性的,对应到CPU的一个指令。如果这个都不能保证的话就乱套了。

    比如说,两个线程向同一个堆上的变量a写数据,一个写0x123456789,一个写0x987654321。

    那么这个变量a的值要么是0x123456789要么是0x987654321。不可能是0x123456321,或者0x983456789,或者0x183654389

     2
    
我们在线,来聊聊吧