[@小川游鱼][¥20]什么是多线程环境下的伪共享(false sharing)?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

[@小川游鱼][¥20]什么是多线程环境下的伪共享(false sharing)?

李博 bluemind 2018-12-13 13:25:25 874

问题来自Java技术沙龙的李博
Java线下沙龙报名链接:https://yq.aliyun.com/activity/796

Java
分享到
取消 提交回答
全部回答(1)
  • 徐雷frank
    2019-07-17 23:20:29

    1、False sharing假共享(伪共享)主要是产生在多线程多核心CPU共享缓存架构中
    2、单个缓存行在英特尔架构上的大小为64字节(在不同平台上,范围从32字节到128),x86-64机器以原子方式使这块内存无效。 不同的内核可以将数据从主内存写入同一缓存。 并发读取期间缓存一致性没有问题,
    3、但写入是一种更复杂的操作 - 它会对一致性协议产生很高的负担。 False sharing虚假共享是指存储器单元不同但物理上落在同一缓存线上时。
    4、False sharing假共享可能是性能下降的原因(线程必须抵制不同的物理CPU,但在高负载应用程序中它不是问题 - 操作系统会调度线程)。 对局部变量的写入操作可能成本很高。
    5、False sharing假共享是自动同步缓存协议的固有功能,也可以存在于分布式文件系统或数据库等环境中,但目前流行仅限于RAM缓存。

    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题