ART世界探险(5) - 计算指令
计算机的核心功能就是计算,Android为我们提供了一个让JVM,ARM, ARM v7a, ARM64, x86, x86_64, mips, mips64共舞的舞台,让我们一起看看它们的计算分别是如何实现的吧
淘宝双促中的 RAX
在2017年1月12日 Weex Conf 2017上,来自淘宝前端团队的亚城结合淘宝实际业务分享了淘宝双促中的RAX实践,在本次 Weex Conf 上正式开源的 RAX 是基于 React 标准的 DSL 框架。本文是亚城关于淘宝双促中的 RAX 实践的分享整理。
CAS指令与MESI缓存一致性协议、 “轻量级锁” 与原子操作
CAS指令与MESI缓存一致性协议、 “轻量级锁” 与原子操作
“最轻量级的锁”,通常也叫”原子操作”,之所以加引号是因为他们在汇编级别并不是原子操作,是用多条指令完成的,这些操作大多都是利用CPU支持的汇编指令.
CAS(Compare-And-Swap)指令是并行程序设计最基础的基石。
手工打造一把锁
接上篇(https://yq.aliyun.com/articles/59034 ),我们知道了lock的意义。回到之前的多线程加法操作,当然也可以通过pthread提供的互斥锁来保证结果是正确的。那互斥锁本身是如何保证原子性的呢?当然首先获得锁的操作需要是一个指令,而不能用加载-比对-存储这种类.
搞一搞Main Thread Checker
Main Thread Checker(后面简称MTC)简单来说就是一个适用于Swift和C语言的小工具。当必须在主线程执行的API在非主线程被调用的时候, MTC会报错并暂停程序执行。该类API包括
**AppKit的接口**、**UIKit的接口**和**其他需要在主线程执行的API**等。
MTC的原理官网也说的比较明白了。在App启动的时候,加载动态库——**libMainThre