谷歌官方建议笔记——多线程

原文

不得不说一句,谷歌口气好大,SMP啊…怎么着也是超算领域的名词啊…

  • Android上的处理器主要分为两种:uni-processor,流水线级的并行;SMP,内核级的并行
  • Android处理器保证,读与读之间不会重排序,写与写之间不会重排序
  • 即便是写通的Cache,在真正数据落地前也会运行数条指令
  • 对现有的大部分ARM处理器来说,32bytes的数据读写基本上是在一个Cache Line,是原子性的。同时,邻近的Byte、int等小于32bytes的值,读写都是会同时更新邻近的数据,会有额外开销
  • 在ARM上,不同位置读写被感知的顺序是不保证的,A = 41
    B = 1 // “A may not be ready”
  • C中的volatile可能会导致非原子操作
  • 对于Synchronized块A;synchronized(D){B;}C;必须不能假设执行顺序是ABC
  • 近邻的synchronized块可能被编译器合并
  • double和long型如果不是volatile的,读写都不是原子的
  • Double Checked Locking需要将单实例设为volatile才能work,解释
    • 对于synchronized块,逻辑保证是,释放块之前(monitorexit)所有操作都做完了。并不保证,释放块之后的操作在monitorexit之前完成
  • 注意的是synchronized仅保证同一对象的synchronized块之间的读写是可见的
  • 关于Volatile的好文
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值