关于Volatile关键字含义的一些个人理解

Volatile关键字出现在一些高级语言中,尤其是支持多线程编程的语言,比如C、C++、Java和C#。这些语言赋予了Volatile关键字不同的含义,但是总的来说,引入该关键字的出发点应该都是类似的。

在将volatile关键字之前,我们先了解一下计算机的缓存系统。根据不同的读取速度,计算机的存储器可以分为disk、memory、cache和register几大类。读写速度依次递增,存储容量依次递减。当然cache还能进一步细分成几级,如一级缓存、二级缓存和三级缓存,缓存还包括缓存命中(cache hit)和缓存失效(cache miss)以及缓存的替换策略等,关于缓存,还有更多知识,这里就不一一解释了。接下来,我们考虑如下一个场景:

一份数据被load进memory,当cpu需要处理该数据时,又会被load进cpu中的register。由于cpu的处理速度比memory的读写速度快很多,就会造成cpu的等待,形成性能瓶颈。解决办法之一便是加入读写更快的cache作为memory和cpu之间的缓存。有了cache之后,便有了如下问题:假如应用程序开启了两个线程Thread1和Thread2,Thread1和Thread2同时处理该份数据(data)ÿ

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值