volatile关键字 volatile关键字是轻量级的 synchronized 当变量被声明为 volatile的时候,在对volatile变量进行写操作时候,汇编指令会插入一个 Lock前缀指令,这个指令会引发两件事情。 1. 将当前处理器缓存行写回到系统内存。 2. 这个写回内存的操作会是其 ...
分类:
其他好文 时间:
2018-08-07 01:34:44
阅读次数:
172
volatile、内存屏障/内存栅栏、Java是如何实现跨平台的、线程状态及转化、 List接口、Set接口、Map接口区别 List三个实现类:LinkedList、ArrayList、Vector Set接口两个实现类:HashSet(底层由HashMap实现)、LinkedHashSet So ...
分类:
其他好文 时间:
2018-07-31 21:47:53
阅读次数:
134
关键词:wfe、FIFO ticket-based、spin_lock/spin_trylock/spin_unlock、spin_lock_irq/spin_lock_bh/spin_lock_irqsave。 《Linux并发与同步专题 (1)原子操作和内存屏障》 《Linux并发与同步专题 ( ...
分类:
系统相关 时间:
2018-07-06 01:40:24
阅读次数:
280
从ARMv7指令集开始,ARM提供3条内存屏障指令。 (1)数据存储屏障( Data Memory Barrier,DMB) 数据存储器隔离。DMB指令保证:仅当所有在它前面的存储器访问操作都执行完毕后,才提交( commit)在它后面的存取访问操作指令。当位于此指令前的所有内存访问均完成时,DMB ...
分类:
其他好文 时间:
2018-06-15 15:49:34
阅读次数:
990
"谈乱序执行和内存屏障" 10多年前的程序员对处理器乱序执行和内存屏障应该是很熟悉的,但随着计算机技术突飞猛进的发展,我们离底层原理越来越远,这并不是一件坏事,但在有些情况下了解一些底层原理有助于我们更好的工作,比如现代高级语言多提供了多线程并发技术,如果不深入下来,那么有些由多线程造成问题就很难排 ...
分类:
其他好文 时间:
2018-06-14 18:01:18
阅读次数:
147
内存屏障有两个能力:1. 阻止屏障两边的指令重排序。2. 强制把写缓冲区/高速缓存中的脏数据等写回主内存,让缓存中相应的数据失效。 对Load Barrier来说,在读指令前插入读屏障,可以让高速缓存中的数据失效,重新从主内存加载数据。对Store Barrier来说,在写指令之后插入写屏障,能让写 ...
分类:
其他好文 时间:
2018-06-13 12:02:54
阅读次数:
216
基本功 1,HTTP 请求的 GET 与 POST 方式的区别:Post的数据大多都在body里面,post比get多一次header请求 2,equals 与 == 的区别:equals是逻辑等,==是对象地址 线程: 1,Arraylist 与 LinkedList 区别:arraylist底层 ...
分类:
其他好文 时间:
2018-05-22 00:48:23
阅读次数:
137
Java内存模型JMM java内存模型定义 上一遍文章我们讲到了CPU缓存一致性以及内存屏障问题。那么Java作为一个跨平台的语言,它的实现要面对不同的底层硬件系统,设计一个中间层模型来屏蔽底层的硬件差异,给上层的开发者一个一致的使用接口。Java内存模型就是这样一个中间层的模型,它为程序员屏蔽了 ...
分类:
编程语言 时间:
2018-05-08 19:33:40
阅读次数:
209
参考及相关文献: [java并发编程艺术](https://book.douban.com/subject/26591326/) "jmm cookbook" "synchronized doug lee" "jsr 133" 英语好有时间的同学,建议瞄一眼此博文去读参考文献内容。 1. 写缓冲区 ...
分类:
编程语言 时间:
2018-05-06 18:04:11
阅读次数:
587
Java 并发学习之 JMM 顺序一致性模型与 JMM 顺序一致性模型是一种理想的内存模型,在这个模型下, 指令 是严格按照代码的编写 顺序 执行,同时所有线程只能看到同一个内存区且对内存区的操作都是互斥的, 内存 对所有线程都是 可见 的。 JMM 中,由于每个线程有自己的工作内存,很多情况下,只 ...
分类:
编程语言 时间:
2018-04-05 01:25:31
阅读次数:
186