可见性,锁

可见性是只多处理器并发执行.操作共享数据的问题.

多线程程序在多处理器环境下执行,A处理器更新了共享数据后,B处理器能否读取到最新的数据?如何保证?

处理器一致性协议解决多处理器共享数据同步问题.另一方面处理器为了优化性能,一般会有写缓冲.缓冲会导致数据的更新对其他处理器非实时可见(最终可见)

刷新写缓冲,刷新无效队列可以解决写缓冲导致的不可见问题.处理器提供内存屏障指令支持刷脏数据作用.

可见性只是刷新缓存.不提供排他性操作.

锁提供排他性操作,同时锁释放,锁获取时会刷缓存

共享的final关键字会在首次初始后,和读取时刷缓存,以保障final字段的多处理器可见性..

猜你喜欢

转载自www.cnblogs.com/reachlins/p/12762387.html