Java中有多少种类型的内存屏障?

 坏尐骇MB_549 发布于 2023-01-21 03:41

例如,在标准C11C++ 11中,有6种类型的内存屏障:http://en.cppreference.com/w/cpp/atomic/memory_order

memory_order_relaxed

memory_order_consume

memory_order_acquire

memory_order_release

memory_order_acq_rel

memory_order_seq_cst

哪些是确定编译器可以重新排序指令的方向,以及哪些处理器指令需要插入以限制处理器的流水线中的重新排序.例如,前五个障碍仅影响编译器,但不生成任何CPU指令(否S/L/ MFENCE),因为在x86中 - 自动提供acquire-release-semantics.

Java中有多少种类型的内存屏障?或者只有两种类型?

允许所有重新排序

禁止所有重新排序

AnatolyG.. 5

Java语言或其标准库中没有明确指定的"内存障碍".有一个基于"之前发生"关系的Java内存模型(JMM).当然,JVM的实现使用一些内存障碍来实现JMM,但它们是特定于实现/硬件的.参见例如:http: //gee.cs.oswego.edu/dl/jmm/cookbook.html该文章定义了LoadLoad,LoadStore,StoreLoad,StoreStore抽象内存障碍(非标准,但广泛使用的术语)并描述了如何它们可以在特定硬件上实现.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有