0
点赞
收藏
分享

微信扫一扫

volidate

 可见性:一个线程对共享变量做出修改(工作内存修改后,还未同步更新主内存或者主内存更新后,其他线程读取的还是自己的工作内存),

能够被其他线程看到(通知到)。

前后会加上lock指令,在操作完变量后,会强制写回主内存。通过协议嗅探机制,通知其他的线程从主内存读取数据(同步自己的工作内存)


有序性:通用内存屏障指令保证代码执行时不进行指令重排。(loadBarrier读屏障、storeBarrier写屏障)

禁止指令重排:在执行程序时,为了提高性能,编译器和处理器

不能保证原子性

使用volidate的条件

1.只有一线程修改变量

2.写入的变量不依赖其他线程的变量值

3.变量不需要和其他需要变更状态的变量之间有依赖

4.访问变量时,没有其他原因加锁

举报
0 条评论